日志log

用于记录系统发生的各种事件

常见记录的位置:控制台,磁盘中等

在jdk1.3以前,java日志依赖System.out.println(),System.err.println(),e.printStackTrace()

​ 这样写日志有一个非常大的bug,没有定制,非常的机械化

在jdk1.4之后,sun添加了一个java.util.logging,简称JUL(使用较少)

​ 配置文件的位置:%java_home%\jre\lib\logging.properties

2001年Ceki Gülcü发布了log4j,并将其捐给apache软件基金会

​ log4j在设计上非常优秀,定义了Logger,Appender,Level等概念

Level 由低到高

​ trace>debug>info>warn>error>fatal

日志的使用(一)

log4j+commons-logging

引入依赖

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

添加配置文件

启动时默认在resources中找log4j.xml

若没找到则找log4j.properties

日志级别

fatal (最高级别)致命的
error 错误
warn 警告
info 信息
debug 最低级别
trace 少许的

off 关闭日志(没有任何新)

all 所有日志(打印所有级别的日志)

设置级别,可以打印出高于本身级别的信息,根据不同的情况设置打印什么级别的信息

处理器

org.apache.log4j.ConsoleAppender 控制台

org.apache.log4j.FileAppender 文件

org.apache.log4j.RollingFileAppender 可以指定文件的大小,若超出则新建一个文件

org.apache.log4j.DailyRollingFileAppender 每天新建一个文件

org.apache.log4j.WriterAppender 将日志以流的方式发送到任意地址

格式化

org.apache.log4j.PatternLayout 可以灵活的指定布局模式

org.apache.log4j.HTMLLayout 以HTML表格的形式进行布局

org.apache.log4j.SimpleLayout 包含日志信息级别和信息字符串

格式化时的参数
占位符描述
%c类路径
%d输出日期格式,例如:d{yyyy-MM-dd HH:mm:ss,SSS}
%p输出优先级
%m消息
%n换行
%r毫秒数
%t线程

日志的使用(二)

logback+SLF4j

引入依赖

<!-- 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>

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。
	 默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="60 seconds" debug="true">

    <property name="CONSOLE_LOG_PATTERN"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} |-[%-5p] in %logger.%M[line-%L] -%m%n"/>
    <property name="log.path" value="D:/log" />

    <!-- 输出到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!-- Threshold=即最低日志级别,此appender输出大于等于对应级别的日志
             (当然还要满足root中定义的最低级别)
        -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>trace</level>
        </filter>
        <encoder>
            <!-- 日志格式(引用变量) -->
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- 追加到文件中 -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>${log.path}/hello.log</file>
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="file2" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.path}/world.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <charset>UTF-8</charset> <!-- 设置字符集 -->
        </encoder>
        <!-- 日志记录器的滚动策略,按日期,按大小记录
             文件超过最大尺寸后,会新建文件,然后新的日志文件中继续写入
             如果日期变更,也会新建文件,然后在新的日志文件中写入当天日志
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 新建文件后,原日志改名为如下  %i=文件序号,从0开始 -->
            <fileNamePattern>${log.path}/world-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 每个日志文件的最大体量 -->
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>1kb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 日志文件保留天数,1=则只保留昨天的归档日志文件 ,不设置则保留所有日志-->
            <maxHistory>1</maxHistory>
        </rollingPolicy>
    </appender>
    <root level="trace">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="file"/>
        <appender-ref ref="file2"/>
    </root>
</configuration>

配置文件的查找

优先logback-test.xml

其次logback.groovy

最后logback.xml

一级目录

二级目录

三级目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值