log4j 输出原始数据到指定日志文件

项目中需要将上传的数据输出到指定的log文件,之前对log4j缺少深入认识,普遍将整个应用的日志到输出到一个文件。

在经理的帮助下,业务数据可以直接输出到指定的log文件,现将配置及使用流程整理一下。

log4j.properties配置

log4j.logger.userLog= INFO,userLogFile
log4j.appender.userLogFile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.userLogFile.File=/data/userlogs/users.log
log4j.appender.userLogFile.MaxFileSize=1000mb
log4j.appender.userLogFile.Threshold=INFO
log4j.appender.userLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.userLogFile.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n

userLog是logger的一个类别名字。可以在程序中 Logger.getLogger("userLog");直接获得到此logger.

appender在此不做过多解释,它只是一个日志输出的方式。

MaxFileSize 文件占用磁盘存储的最大size。

Threshold对哪些信息记录。

ConversionPattern

%p 日志级别

%d{yy-MM-dd} 时间格式

%c 类别名字,这里是userLog

%m 实际的内容,也就是信息message, log.info(message);

%n 换行。

 注: rootLogger是属于应用的唯一、顶级的logger。将特定的数据输出到特定的log文件,则不能使用rootLogger,要使用自己定义的logger

import com.alibaba.fastjson.JSONObject;
public
class Controller { Logger logger = Logger.getLogger("userLog");   @RequestMapping(value="/data/saveData",method={RequestMethod.POST,RequestMethod.GET})   public char savaDataAction(final HttpServletRequest request, final PlayData data) {       // 转为json字符串后记录下来       String json = JSONObject.toJSONString(data); logger.info(json);       return '1';   }
}
原文地址:https://www.cnblogs.com/zhengwenqiang/p/8681908.html