如何将javax logger句柄设置为重构敏感

时间:2009-12-29 11:59:22

标签: java log4j logging

有人可能会对我大喊大叫阅读faqqing faq,但我很着急......

有没有人有办法让javax或log4j logger重构敏感?

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

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

而且logging.properties有

.level = warning
utils.Something.level=info

然后使用Eclipse重构Something to 的 nutilla.Somewhere

导致我的记录器句柄和记录器属性变得不同步。

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

有没有人费心去做,值得麻烦吗?

澄清: 在将utils.Something重构为nutilla.Somewhere之后,由于logging.properties文件中的条目,logger句柄现在只会记录警告而不是信息。所以问题是,有没有办法用程序化方法替换logging.properties文件的功能,如果有的话,是否值得麻烦?

问题的原因和动机

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

在构建了大量的类/接口结构之后,对我来说很明显,某些类,接口或方法已经发生了,然后所有的重构活动都发生了...... tada ...就在我的logging.properties时文件毁了一百行。

3 个答案:

答案 0 :(得分:1)

我不认为有一种开箱即用的方法可以通过重构操作更新属性文件中的包名和类名。

你可以:

  • 在重构完成后手动更新属性文件(重构应该是一个不进行eveery周的动作:=)
  • 使用固定字符串创建记录器(使记录更具功能性而不是物理记录)
  • 加载属性文件,并在使用该属性集初始化log4j之前,根据您在类中声明的常量调整属性名称

我会自己选择第一个选项,过多的自动行为会让你很快陷入非常不透明的境地。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

我不会使用它(我认为在重构时要小心更合理)但是在这里:

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