2

如何使用 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

我需要编程方式来实现上述配置行。

提前致谢。

4

0 回答 0