Pio*_*ler 1 java logging log4j slf4j log4j2
我不能配置Log4j2来读取XML文件的配置在工作目录.
我试图设置系统属性,因为文档说:
Log4j将检查"log4j.configurationFile"系统属性,如果设置,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置
使用Main类静态初始化程序块,也在main方法中,具有相对和绝对路径:
System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
"E:/log4j2.xml");
System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
"./log4j2.xml");
System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
"log4j2.xml");另外随着"log4j.configurationFile"代替XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY并没有什么的的作品.
只有将XML添加到我的类路径中并将其放在src目录中时,此配置才有效.我想通过编辑工作目录中的XML文件来允许编译后的lightweid配置.
使用的依赖项:
小智 5
对我来说很好.
public class Runtimeconfig {
public static void main(String args[]) {
System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "/home/peter/config/log4j2.xml");
new LoggedClass().logMe();
}
}
public class LoggedClass {
static Logger logger = LogManager.getLogger(LoggedClass.class);
public void logMe() {
logger.info("I'm logged!");
}
}
Run Code Online (Sandbox Code Playgroud)
它在你使用时会中断
static Logger logger = LogManager.getLogger(Runtimeconfig.class);
Run Code Online (Sandbox Code Playgroud)
在您的类中,main方法所在的类,因为静态字段首先初始化.
以下是有用的
public class Runtimeconfig {
static {
System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "/home/peter/config/log4j2.xml");
}
static Logger logger = LogManager.getLogger(Runtimeconfig.class);
public static void main(String args[]) {
new LoggedClass().logMe();
new Runtimeconfig().logger.info("I'm logged too");
}
}
Run Code Online (Sandbox Code Playgroud)
但是你依赖于静态字段初始化执行的顺序.
| 归档时间: |
|
| 查看次数: |
5636 次 |
| 最近记录: |