java - 使用 Log4j 日志记录实用程序指定我自己的附加程序(或行为)

标签 java apache logging log4j

我有以下 Log4j 属性:

log4j.rootLogger=DEBUG, ONE, TWO

log4j.appender.ONE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ONE.File=logs/one.log
log4j.appender.ONE.DatePattern='.'yyyy-MM-dd
log4j.appender.ONE.layout=org.apache.log4j.PatternLayout
log4j.appender.ONE.layout.ConversionPattern= %-5p [%t]  %c - %m%n


log4j.appender.TWO=org.apache.log4j.DailyRollingFileAppender
log4j.appender.TWO.File=logs/TWO.log
log4j.appender.TWO.DatePattern='.'yyyy-MM-dd
log4j.appender.TWO.layout=org.apache.log4j.PatternLayout
log4j.appender.TWO.layout.ConversionPattern= %-5p [%t]  %c - %m%n

唯一的区别是日志文件位置。是否有一种编程方法可以让我选择使用哪个附加程序。

IE

if(Config.getInstance().equals("One"))
     //Use appender ONE
else
     //use appender TWO

我当前的想法/解决方案是有两个属性文件并使用设置属性方法。但是,我很好奇是否有替代解决方案。

谢谢。

最佳答案

这应该有效:

    //Using system args instead of Config
    final Logger rootLogger = Logger.getRootLogger();
    Appender ap = null;
    if (args[0].equals("1")) {
        ap = rootLogger.getAppender("TWO");
    } else if ( args[0].equals("2") ) {
        ap = rootLogger.getAppender("ONE");
    }
    if (ap != null) { 
        rootLogger.removeAppender(ap);
    }

关于java - 使用 Log4j 日志记录实用程序指定我自己的附加程序(或行为),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18005092/

相关文章:

java - 如何为 Android Studio 循环创建按钮删除 View

Java ZipInputStream 没有读取整个 ZipEntry

java - 捕获 Jython 输出

sql - 使用铆钉的 Informix 提取不返回查询结果的结尾

c++ - 为事件记录系统设计(递归)记录对象

python - 写入日志文件时出现类型错误

logging - 如何在Cassandra服务器上跟踪查询?

java - 输出不会打印正确的信息

php - Apache 不更新环境变量

php - 重定向 HTTP 表单帖子