- 1.新建一个
maven
项目 - 2.打开项目中的
pox.xml
文件,添加内容:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
-
3.新建如图的文件
文件中的内容如下:
#配置默认日志级别,和appenderName1;例如:log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
log4j.rootLogger = DEBUG,stdout,Info,Debug,Error
# 控制台输出DEBUG日志
# org.apache.log4j.ConsoleAppender 代表输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Threshold = DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%5p]-[%t:%r]-[%l]-[%d]- - %m%n
### 输出DEBUG 到 to D://logs/debug.log ###
# org.apache.log4j.FileAppender 代表输出到文件
# org.apache.log4j.DailyRollingFileAppender 代表输出到文件,按日期分隔
log4j.appender.Info = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Info.File = D://logs/debug.log
log4j.appender.Info.Append = true
log4j.appender.Info.Threshold = DEBUG
log4j.appender.Info.layout = org.apache.log4j.PatternLayout
log4j.appender.Info.layout.ConversionPattern = [%5p]-[%t:%r]-[%l]-[%d]- - %m%n
### 输出INFO到 D://logs/info.log ###
log4j.appender.Debug = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Debug.File = D://logs/info.log
log4j.appender.Debug.Append = true
log4j.appender.Debug.Threshold = INFO
log4j.appender.Debug.layout = org.apache.log4j.PatternLayout
log4j.appender.Debug.layout.ConversionPattern = [%5p]-[%t:%r]-[%l]-[%d]- - %m%n
### 输出error到 D://logs/error.log ###
log4j.appender.Error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Error.File =D://logs/error.log
log4j.appender.Error.Append = true
log4j.appender.Error.Threshold = ERROR
log4j.appender.Error.layout = org.apache.log4j.PatternLayout
log4j.appender.Error.layout.ConversionPattern = [%5p]-[%t:%r]-[%l]-[%d]- - %m%n
- 4.下载安装
log4j
-5.测试使用
import org.apache.log4j.Logger;
public class Demo{
private static Logger logger = Logger.getLogger(Demo.class);
public static void main(String[] agrs) {
logger.debug("test");
}
}
再控制台和对应文件夹中查看日志
-6.日志格式化的通配符含义
转换字符 | 含义 |
---|---|
c | 用于输出日志事件的类别。例如,对于类别名称"a.b.c",模式%c{2}将输出"b.c"。 |
C | 用于输出发出日志记录请求的调用方的全限定类名。例如,对于类名"org.apache.xyz.SomeClass",模式%C{1}将输出"SomeClass"。 |
d | 用于输出记录事件的日期。例如,%d{HH:mm:ss,SSS}或%d{dd MMM yyyy HH:mm:ss,SSS}。 |
F | 用于输出发出日志请求的文件名。 |
l | 用于输出生成日志事件的呼叫者的位置信息。 |
L | 用于输出发出记录请求的行号。 |
m | 用于输出与日志记录事件关联的应用程序提供的消息。 |
M | 用于输出发出记录请求的方法名称。 |
n | 输出平台相关的行分隔符或多个字符。 |
p | 用于输出日志事件的优先级。 |
r | 用于输出从布局的构造到创建日志记录事件所经过的毫秒数。 |
t | 用于输出生成日志事件的线程的名称。 |
x | 用于输出与生成日志事件的线程关联的NDC(嵌套诊断上下文)。 |
X | X转换字符后跟MDC的密钥。例如,X{clientIP}将根据密钥clientIP打印MDC中存储的信息。 |
% | 文字百分号。%%将打印一个%符号。 |
格式修饰符
格式修饰符 | 左对齐 | 最小宽度 | 最大宽度 | 作用 |
---|---|---|---|---|
%20c | false | 20 | none | 如果类别名称的长度少于20个字符,请在左侧填充空格。 |
%-20c | true | 20 | none | 如果类别名称的长度少于20个字符,请用空格右击。 |
%.30c | NA | none | 30 | 如果类别名称超过30个字符,请从头开始截断。 |
%20.30c | false | 20 | 30 | 如果类别名称少于20个字符,请在左侧填充空格。但是,如果类别名称超过30个字符,则从头开始截断。 |
%-20.30c | true | 20 | 30 | 如果类别名称少于20个字符,请用空格右击。但是,如果类别名称超过30个字符,则从头开始截断。 |