java - Log4j 引用输入

标签 java log4j

我想引用我的 log 4j 属性文件上的输入,这样当它从外部接收到输入命令时,它会在列表中查找它并采取相应的操作。

它是这样的:

log4j.appender.R.File=/home/oracle/conf/ATL_${log_file_name}/ATL_${log_file_name}.dlg

其中 ${log_file_name} 是在 d-switch 上传递的整数

现在整数被引用到列表:

1-食物

2-水果

3-蔬菜

这样当${log_file_name}为1时,命令将变为:

log4j.appender.R.File=/home/oracle/conf/ATL_food/ATL_food.log

如何在属性文件中设置它?

最佳答案

log4j 属性文件没有此类功能。

但是,您可以通过编程方式将文件附加程序添加到根记录器,请参阅下面的示例:

import java.io.IOException;
import org.apache.log4j.*;

public class LogTest {
    public static void main(String args[]) throws IOException {
        String category = System.getProperty("logCategory");
        Logger rootLogger = Logger.getRootLogger();
        PatternLayout layout = new PatternLayout("%d{ISO8601} [%t] %-5p %c %x - %m%n"); // replace with your layout
        String logFileName = "/home/oracle/conf/ATL_" + category + "/ATL_" + category + ".dlg";
        rootLogger.addAppender(new FileAppender(layout, logFileName, false));
    }
}

您在命令行上传递 VM 参数 -DlogCategory=food。您可以自己进行数字替换。

关于java - Log4j 引用输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580281/

相关文章:

log4j - 无法启动Spring Boot服务器

java - Log4j - 记录器不工作

java - Java 中的通用 InternPool<T>?

java - 在重复计时器上调用 View.invalidate 的可接受方法

logging - 如何以编程方式更改 logback.xml 中的日志记录级别

java - logback 中的 MaxBackupIndex

java - 如何在log4j2 xml中配置WriterAppender?

java - 混淆 "super"关键字在此上下文中的作用

java - 如何在读取 kafka 主题时验证无效的分区名称

java - 更改窗口标题背景样式