java - 使用 Log4J 进行类别记录

标签 java logging log4j

我尝试登录类别,但我不知道如何配置我的 log4j.properties。

我到底想要什么:

  • 类别{安全、数据库、邮件}的每日日志文件
  • 日志文件具有其类别名称
  • 使用调用记录器的类记录条目(例如下面)

这是我所拥有的:

public class CategoryLogger {

    private static Logger securityLogger = Logger.getLogger("SECURITY");
    private static Logger databaseLogger = Logger.getLogger("DATABASE");
    private static Logger mailLogger = Logger.getLogger("MAIL");


    public void securitylog(LogLevel level, String message) {
        this.log(securityLogger, level, message);
    }

    public void databaselog(LogLevel level, String message) {
        this.log(databaseLogger, level, message);
    }

    public void maillog(LogLevel level, String message) {
        this.log(mailLogger, level, message);
    }

    private void log(Logger logger, LogLevel level, String message) {
        switch (level) {
            case TRACE:
                logger.trace(message);
                break;
            case DEBUG:
                logger.debug(message);
                break;
            case INFO:
                logger.info(message);
                break;
            case WARN:
                logger.warn(message);
                break;
            case ERROR:
                logger.error(message);
                break;
            case FATAL:
                logger.fatal(message);
                break;
            default:
                break;
        }
    }
}

日志应如下所示:

database-2018-09-28.log
DATABASE | 2018-09-28 20:02:19 | INFO  | DAO:22 | This is a info.
DATABASE | 2018-09-28 20:02:19 | WARN  | DAO:23 | This is a warn.
DATABASE | 2018-09-28 20:02:19 | ERROR | DAO:24 | This is a error.
DATABASE | 2018-09-28 20:02:19 | FATAL | DAO:25 | This is a fatal.

security-2018-09-28.log
SECURITY | 2018-09-28 20:02:19 | INFO  | SimpleAccess:33 | This is a info.
SECURITY | 2018-09-28 20:02:19 | WARN  | SimpleAccess:34 | This is a warn.
SECURITY | 2018-09-28 20:02:19 | ERROR | SimpleAccess:35 | This is a error.
SECURITY | 2018-09-28 20:02:19 | FATAL | SimpleAccess:36 | This is a fatal.

mail-2018-09-28.log
MAIL | 2018-09-28 20:02:19 | INFO  | MailSender:44 | This is a info.
MAIL | 2018-09-28 20:02:19 | WARN  | MailSender:45 | This is a warn.
MAIL | 2018-09-28 20:02:19 | ERROR | MailSender:46 | This is a error.
MAIL | 2018-09-28 20:02:19 | FATAL | MailSender:47 | This is a fatal.

提前非常感谢您的帮助!

亲切的问候,

L.

最佳答案

一种可能的解决方案是使用 3 个独立的文件附加器(每个记录器一个)

例如数据库日志 将以下内容添加到您的 log4j.properties

log4j.appender.DATABASE_RFA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DATABASE_RFA.File=/path/to/your/log/folder/database-
log4j.appender.DATABASE_RFA.DatePattern='.'yyyy-MM-dd'
log4j.appender.DATABASE_RFA.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE_RFA.layout.ConversionPattern=DATABASE | %d{yyyy-MM-dd HH:mm:ss} | %p | %c{1}:%L | %m%n



log4j.logger.DATABASE = info, DATABASE_RFA 
log4j.logger.SECURITY = info, SECURITY_RFA 
log4j.logger.MAIL = info, MAIL_RFA 

您必须为安全和邮件记录器重复附加程序部分

关于java - 使用 Log4J 进行类别记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52560936/

相关文章:

java - Spring 启动。执行 saveAndFlush 并修改实体结果为未保存的 transient 异常

ruby-on-rails - 如何在我的 ruby​​gem 中写入将在 Rails 应用程序中使用的日志?

java - 将异常日志保存到文件中

java - 使用 XMLStreamReader API 读取 W3C 文档后解析它

java - 绘图 Canvas 上的二维数组网格

java - Sonar 扫描仪分析在 util.lang.ConcreteReceiverGuard 上挂起

java - 记录 Java servlet 操作

grails - 自定义包日志级别被忽略

java - AspectJ中@After和@AfterThrowing的区别

java - 在 log4j 中根据日志记录级别创建不同的日志