java - 使用 Log4J 进行分类记录
问题描述
我尝试登录类别,但我不知道如何配置我的 log4j.properties。
我到底想要什么:
- {SECURITY、DATABASE、MAIL} 类别的每日日志文件
- 日志文件具有其类别的名称
- 使用调用记录器的类记录条目(例如下面)
这是我所拥有的:
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
您必须为 SECURITY 和 MAIL 记录器重复appender 部分
推荐阅读
- flutter - dart - 如何解决“无法将参数类型‘Null’分配给参数类型‘MyUser’。”
- amazon-web-services - ACM 如何使用 CNAME 记录检查域所有权?
- ios - 如何在iphone照片中保存/下载图片
- c - 在列表中找到一个数字(要从键盘读取),其中列表的大小和要从键盘读取的列表
- java - 为什么对话框上看不到“标签”和“按钮”?
- e-commerce - 从销售数据中了解客户
- python - 如何在使用 Selenium 的动态加载网页中正确滚动?
- mysql - 在两个表mysql上左连接时获取最后修改日期
- r - 用 R 中的 0 替换 NAN
- r - 按不同的字符值汇总