如何设置的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());
我不认为有一种方法开箱即更新作为重构操作的结果,您的属性文件中包名称和类名称。
您可以:
- 更新时重构完成(重构应该是不eveery周开展的一项行动:=)属性用手文件
- 使用固定字符串创建记录器(使记录更多的功能,而不是属性文件,并与属性集合
我会为自己的第一个选择,太多的automagic行为可以让你在非常不透明的情况下很快。
你会让每个记录器都告诉你它是一个类加载器吗? – rsp 2009-12-29 12:18:43
@rsp - 尝试运行代码。然后记住一个堆栈跟踪是相反的,所以在pos 0有最内层的框架。 – diciu 2009-12-29 12:37:11
将记录器放在非静态字段中,并使用Logger.getLogger(getClass()。getName()),可能会更好地显示您的意图... – meriton 2009-12-29 13:59:11