Maven工程配置logback打印日志
logback.xml配置:
<?
xml version
="1.0"
encoding
="UTF-8"
?>
<!--
从高到地低
OFF
、
FATAL
、
ERROR
、
WARN
、
INFO
、
DEBUG
、
TRACE
、
ALL -->
<!--
日志输出规则 根据当前
ROOT
级别,日志输出时,级别高于
root
默认的级别时 会输出
-->
<!--
以下 每个配置的
filter
是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过
filter
过滤只记录本级别的日志
-->
<!--
属性描述
scan
:性设置为
true
时,配置文件如果发生改变,将会被重新加载,默认值为
true scanPeriod:
设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,
默认单位是毫秒。当
scan
为
true
时,此属性生效。默认的时间间隔为
1
分钟。
debug:
当此属性设置为
true
时,将打印出
logback
内部日志信息,实时查看
logback
运行状态。默认值为
false
。
-->
<
configuration
scan
="true"
scanPeriod
="60 seconds"
debug
="false"
>
<!--
定义日志文件 输入位置
-->
<
property
name
="log_dir"
value
="logs"
/>
<!--
日志最大的历史
30
天
-->
<
property
name
="maxHistory"
value
="30"
/>
<!-- ConsoleAppender
控制台输出日志
-->
<
appender
name
="STDOUT"
class
="ch.qos.logback.core.ConsoleAppender"
>
<!--
对日志进行格式化
-->
<!--%logger{36}
表示
logger
名字最长
36
个字符,否则按照句点分割。
logger{length}
输出日志的
logger
名,可有一个整形参数,功能是缩短
logger
名,设置为
0
表示只输入
logger
最右边
-->
<!--%d{HH:mm:ss.SSS}
输出日志的打印日志,模式语法与
java.text.SimpleDateFormat
兼容。
-->
<!--%msg%n
其中
msg
表示打印输出的消息,
%n
表示换行 可选的格式修饰符位于
“%”
和转换符之间。第一个可选修饰符是左对齐 标志,符号是减号
“-”
;
-->
<!--thread
输出产生日志的线程名。
-->
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!-- ERROR
级别日志
-->
<!--
滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件
RollingFileAppender-->
<
appender
name
="ERROR"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--
过滤器,只记录
WARN
级别的日志
-->
<
filter
class
="ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>
ERROR
</
level
>
<
onMatch
>
ACCEPT
</
onMatch
>
<
onMismatch
>
DENY
</
onMismatch
>
</
filter
>
<!--
最常用的滚动策略,它根据时间来制定滚动策略
.
既负责滚动也负责触发滚动
-->
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--
日志输出位置 可相对、和绝对路径
-->
<
fileNamePattern
>
${log_dir}/%d{yyyy-MM-dd}/error-log.log
</
fileNamePattern
>
<!--
可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且
<maxHistory>
是
6
,
则只保存最近
6
个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除
-->
<
maxHistory
>
${maxHistory}
</
maxHistory
>
</
rollingPolicy
>
<!--
按照固定窗口模式生成日志文件,当文件大于
20MB
时,生成新的日志文件。窗口大小是
1
到
3
,当保存了
3
个归档文件后,将覆盖最早的日志。
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy> -->
<!--
查看当前活动文件的大小,如果超过指定大小会告知
RollingFileAppender
触发当前活动文件滚动
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy> -->
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!-- WARN
级别日志
appender -->
<
appender
name
="WARN"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--
过滤器,只记录
WARN
级别的日志
-->
<
filter
class
="ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>
WARN
</
level
>
<
onMatch
>
ACCEPT
</
onMatch
>
<
onMismatch
>
DENY
</
onMismatch
>
</
filter
>
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--
按天回滚
daily -->
<
fileNamePattern
>
${log_dir}/%d{yyyy-MM-dd}/warn-log.log
</
fileNamePattern
>
<!--
日志最大的历史
60
天
-->
<
maxHistory
>
${maxHistory}
</
maxHistory
>
</
rollingPolicy
>
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!-- INFO
级别日志
appender -->
<
appender
name
="INFO"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--
过滤器,只记录
INFO
级别的日志
-->
<
filter
class
="ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>
INFO
</
level
>
<
onMatch
>
ACCEPT
</
onMatch
>
<
onMismatch
>
DENY
</
onMismatch
>
</
filter
>
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--
按天回滚
daily -->
<
fileNamePattern
>
${log_dir}/%d{yyyy-MM-dd}/info-log.log
</
fileNamePattern
>
<!--
日志最大的历史
60
天
-->
<
maxHistory
>
${maxHistory}
</
maxHistory
>
</
rollingPolicy
>
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!-- DEBUG
级别日志
appender -->
<
appender
name
="DEBUG"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--
过滤器,只记录
DEBUG
级别的日志
-->
<
filter
class
="ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>
DEBUG
</
level
>
<
onMatch
>
ACCEPT
</
onMatch
>
<
onMismatch
>
DENY
</
onMismatch
>
</
filter
>
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--
按天回滚
daily -->
<
fileNamePattern
>
${log_dir}/%d{yyyy-MM-dd}/debug-log.log
</
fileNamePattern
>
<!--
日志最大的历史
60
天
-->
<
maxHistory
>
${maxHistory}
</
maxHistory
>
</
rollingPolicy
>
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!-- TRACE
级别日志
appender -->
<
appender
name
="TRACE"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<!--
过滤器,只记录
ERROR
级别的日志
-->
<
filter
class
="ch.qos.logback.classic.filter.LevelFilter"
>
<
level
>
TRACE
</
level
>
<
onMatch
>
ACCEPT
</
onMatch
>
<
onMismatch
>
DENY
</
onMismatch
>
</
filter
>
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!--
按天回滚
daily -->
<
fileNamePattern
>
${log_dir}/%d{yyyy-MM-dd}/trace-log.log
</
fileNamePattern
>
<!--
日志最大的历史
60
天
-->
<
maxHistory
>
${maxHistory}
</
maxHistory
>
</
rollingPolicy
>
<
encoder
>
<
pattern
>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n
</
pattern
>
</
encoder
>
</
appender
>
<!--配置自己的需要保存的日志-->
<
appender
name
="zyb"
class
="ch.qos.logback.core.rolling.RollingFileAppender"
>
<
file
>
log_
</
file
>
<
rollingPolicy
class
="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"
>
<!-- rollover daily -->
<
fileNamePattern
>
log_%d{yyyy-MM-dd}.txt
</
fileNamePattern
>
</
rollingPolicy
>
<
encoder
>
<
pattern
>
%msg%n
</
pattern
>
</
encoder
>
</
appender
>
<
logger
name
="zrender"
level
="debug"
additivity
="false"
>
<
appender-ref
ref
="zyb"
/>
</
logger
>
<!-- root
级别
DEBUG -->
<
root
level
="debug"
>
<!--
控制台输出
-->
<
appender-ref
ref
="STDOUT"
/>
<!--
文件输出
-->
<
appender-ref
ref
="ERROR"
/>
<
appender-ref
ref
="INFO"
/>
<
appender-ref
ref
="WARN"
/>
<
appender-ref
ref
="DEBUG"
/>
<
appender-ref
ref
="TRACE"
/>
</
root
>
</
configuration
>
pom.xml配置:
<
dependency
>
<
groupId
>
ch.qos.logback
</
groupId
>
<
artifactId
>
logback-core
</
artifactId
>
<
version
>
1.2.3
</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<
dependency
>
<
groupId
>
ch.qos.logback
</
groupId
>
<
artifactId
>
logback-classic
</
artifactId
>
<
version
>
1.2.3
</
version
>
<
scope
>
test
</
scope
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->
<
dependency
>
<
groupId
>
ch.qos.logback
</
groupId
>
<
artifactId
>
logback-access
</
artifactId
>
<
version
>
1.2.3
</
version
>
</
dependency
>
<!-- https://mvnrepository.com/artifact/org.logback-extensions/logback-ext-spring -->
<
dependency
>
<
groupId
>
org.logback-extensions
</
groupId
>
<
artifactId
>
logback-ext-spring
</
artifactId
>
<
version
>
0.1.4
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
org.slf4j
</
groupId
>
<
artifactId
>
jcl-over-slf4j
</
artifactId
>
<
version
>
1.7.12
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
org.slf4j
</
groupId
>
<
artifactId
>
slf4j-simple
</
artifactId
>
<
version
>
1.7.12
</
version
>
</
dependency
>
测试:
private final static
Logger
logger
= LoggerFactory.
getLogger
(Test11.
class
);
private final static
Logger
zrender
=LoggerFactory.
getLogger
(
"zrender"
);
@Test
public void
testLogger(){
logger
.error(
"logback
成功了
"
);
logger
.debug(
"logback
成功了
"
);
zrender
.debug(
"
成功了。。。。。。
"
);
zrender
.warn(
"sssssss"
);
}