我有一个应用程序监听特定端口来执行其任务。 该应用程序可以通过指定不同的实例在多个实例上运行 参数中的端口。
MyApp-1211.bat 包含
java MyApp 1211
MyApp-1311.bat 包含
java MyApp 1311
MyApp-1411.bat 包含
java MyApp 1411
此应用程序记录到一个文件。问题是所有三个实例都记录
到单个文件 myApp.log
中。有没有办法告诉 log4j 使用
不同的日志文件?像:
myApp-port1211.log
myApp-port1311.log
myApp-port1411.log
最佳答案
当然可以。一种方法是创建多个配置文件(log4j.xml/log4j.properties) - 每个端口分别处理一个。加载配置文件后,您可以根据当前端口号选择正确的配置文件:
PropertyConfigurator.configure("log4j-" + port + ".properties");
相应地创建配置文件:log4j-1211.properties、log4j-1311.properties、...
另一种方法是通过 Java 代码在运行时配置文件日志记录:
String logFilename = "./myApp-port" + port + ".log";
Layout layout = new PatternLayout("%d{ISO8601} %-5p [%t] %c{1}: %m%n");
FileAppender fileAppender = new FileAppender(layout, logFilename, false);
fileAppender.setThreshold(Level.DEBUG);
Logger.getRootLogger().addAppender(fileAppender);
关于java - Log4j 记录到单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7565756/