如何从核心库中记录

时间:2014-07-17 10:49:45

标签: java log4j

我在我的一个应用程序中使用了log4j,代码如下;

 log=/var/lib/openshift/5372745b4382ec49cb0000d5/app-root/runtime/dependencies/jbossas/deployments/Logs/AppName.log
 org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
 log4j.rootLogger=DEBUG, FILE

 log4j.appender.FILE=org.apache.log4j.FileAppender
 log4j.appender.FILE.append=true log4j.appender.FILE.file=${log}
 log4j.appender.FILE.threshold=DEBUG
 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.FILE.layout.ConversionPattern=%d %-5p %c - %m%n

此应用程序还将使用一些在各种应用程序之间共享的核心应用程序代码 - 我如何从这个核心代码库登录,因为它将在许多应用程序之间共享 - 这意味着我无法提供具体的log = value

这样的事情就足够了吗?

  

登录=的/ var / lib中/ openshift / 5372745b4382ec49cb0000d5 / APP-根/运行/依赖性/ jbossas /部署/日志/ *。登录

1 个答案:

答案 0 :(得分:0)

一种方法是

  • 为每个appplication提供不同的文件追加器
  • 将这些附加者加载到相应的应用程序记录器中。

    protected static final Logger LOGGER = Logger.getLogger(X.class);

    static
    {
        if (null == LOGGER.getAppender("TEST_LOG_APPENDER"))
        {
            RollingFileAppender fa = new RollingFileAppender();
            fa.setName("TEST_LOG_APPENDER");
            fa.setFile("/test-output/" + "App_1.log");
            fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
            fa.setThreshold(Level.DEBUG);
            fa.setAppend(true);
            fa.setMaxFileSize("10MB");
            fa.activateOptions();
            LOGGER.addAppender(fa);
        }
    }
    

请注意,此处您无需创建新的appender,而是删除其他appender并仅使用其中一个。 如果您有一个通用的应用级记录器,这也可以使用。

不确定这是否是正确的做法。但只是一个想法。