如何设置的javax记录器手柄是重构敏感

如何设置的javax记录器手柄是重构敏感

问题描述:

有人可能对我嚷嚷阅读faqqing常见问题,但我有急事......如何设置的javax记录器手柄是重构敏感

有没有人有办法让使用javax或log4j的记录重构-敏感?

说,目前utils.Something有记录器手柄:

final static private Logger logger = Logger.getLogger(Something.class.getName()); 

而且logging.properties有

.level = warning 
utils.Something.level=info 

然后使用Eclipse重构有得 nutilla.Somewhere

导致我的记录器h andle和logger属性变得不同步。

也许,以编程方式设置日志级别?

有没有人困扰这样做,是值得的麻烦?

澄清: 重构utils.Something到nutilla.Somewhere之后,现在记录器手柄只会登录因为在logging.properties文件条目的警告,而不是信息。所以问题是,是否有一种方法可以用编程方式替换logging.properties文件的功能,如果是这样,是否值得麻烦?

原因和动机问题

劝我避免重构,因为...... 重构是我的一个习惯不变当我在不听顽固。我按小时创建课程,合并它们,删除它们,提取方法等等。我是一个不安分的课程创建者,他发现没有时间想知道最初放置课程的位置。我不喜欢坐下来浪费时间想知道最初放置的位置 - 所以我只是将它们放在最方便的包名称空间中。

在建立了大量的类/接口结构之后,对于某些类,接口或方法shd在何处发生了所有的重构活动并且...... tada ...这就是我的日志记录。属性文件被破坏了一百行。

如果您使用类(而不是包)名称配置日志记录,那么在eclipse的重命名重构对话框中选中“更新非Java文本文件中的完全限定类名”应该可以实现。

我不会使用它(我认为它更有意义重构时,要小心),但这里有云:

private static Logger logger = Logger.getLogger(new Exception().getStackTrace()[0].getClassName()); 
+0

你会让每个记录器都告诉你它是一个类加载器吗? – rsp 2009-12-29 12:18:43

+1

@rsp - 尝试运行代码。然后记住一个堆栈跟踪是相反的,所以在pos 0有最内层的框架。 – diciu 2009-12-29 12:37:11

+0

将记录器放在非静态字段中,并使用Logger.getLogger(getClass()。getName()),可能会更好地显示您的意图... – meriton 2009-12-29 13:59:11

我不认为有一种方法开箱即更新作为重构操作的结果,您的属性文件中包名称和类名称。

您可以:

  • 更新时重构完成(重构应该是不eveery周开展的一项行动:=)属性用手文件
  • 使用固定字符串创建记录器(使记录更多的功能,而不是属性文件,并与属性集合
log4j的初始化之前调整你在类中声明常量的基础上,属性名物理)
  • 负荷

    我会为自己的第一个选择,太多的automagic行为可以让你在非常不透明的情况下很快。