logger / appender的编程配置

时间:2017-08-31 09:35:21

标签: java session logging log4j log-level

如何使用Java代码编写以下配置?

log4j.com.saurabh.util.LogUtil=DEBUG, myAppender

我正在处理使用log4j 1.x的遗留代码,我没有选择升级log4j版本。

基本上,我的要求是进行会话级日志记录。对于每个用户会话,应创建单独的日志文件。

    RollingFileAppender userSessionAppender = null;
    try {
        String logFile = new StringBuffer(CATALINA_HOME)
                            .append(File.separator)
                            .append(LOG_DIR)
                            .append(File.separator)
                            .append(InetAddress.getLocalHost().getHostName())
                            .append("_")
                            .append(userName)
                            .append("_")
                            .append((new SimpleDateFormat("yyyy-MM-dd.hh-mm-ss")).format(new Date()).toString())
                            .append(LOG_FILE_EXTN)
                            .toString();

        userSessionAppender = new RollingFileAppender(new PatternLayout(pattern), logFile);
        userSessionAppender.setName(sessionId);
        userSessionAppender.setThreshold(Level.DEBUG);
        // add a filter so we can ignore any logs from other user sessions
        userSessionAppender.addFilter(new SessionIdFilter(sessionId));
        rootLogger.addAppender(userSessionAppender);
        Logger.getLogger(sessionId).addAppender(userSessionAppender);
        Logger.getLogger(sessionId).setLevel(Level.DEBUG);
        Logger.getLogger(sessionId).setAdditivity(false);
    } catch (Exception e) {
        LOG.error("createLogger() : Exception while creating appender for user: " + userName, e);
    }

并实际记录消息:

if (isLoggingEnabled(userName)) {
            Logger.getLogger(sessionId).debug(message);
        }

使用此代码,我可以创建单独的文件并登录到该文件,但是,来自其他类的日志语句也会进入同一个文件。

我想限制特定类/包的日志记录。 我认为下面的配置行有助于此:

log4j.com.saurabh.util.LogUtil=DEBUG, myAppender

我需要以编程方式实现上面的配置。

提前致谢。

0 个答案:

没有答案