logback使用

2023-11-11

1、需要引入maven配置

ch.qos.logback
logback-classic
1.0.0
这个会依赖slf4j-api和logback-core。

ch.qos.logback
logback-access
1.1.5

所有的jar包
logback-access-1.0.0.jar
logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.0.jar

2、LoggerFactory.getLogger()方法可以传递两种参数。自己起的名字和类.class。主要在打印的日志里有所区分

3、logback有默认的配置,会读取项目里的logback.xml和logback-test.xml配置文件

4、配置文件里可以设置到类级别的打印日志

5、appender里加上filter可以使文件里只打印改类型的日志

6、通过定义包来打印框架的日志

7、xml配置里如果使用变量来定义参数,那么就得 ,

8、打印info级别日志时如果getLogger()参数是自定义的string的话,可能会引起无法输出日志的问题

配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!-- 日志存放路径 存放于tomact的log-->
    <property name="LOG_PATH" value="../logs" />

    <!-- error的日志 -->
    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/all_error.log</File>
        <!-- 所有ERROR级别的日志文件打印在一个文件里 过滤器只会过滤对应的日志 -->
        <!--过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志   将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。过滤器被添加到<Appender> 中,为<Appender> 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender> 有多个过滤器时,按照配置顺序执行-->
        <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.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/all_error.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- common下的类打印日志 -->
    <appender name="commonLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/common.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/common.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- front下的类打印日志 -->
    <appender name="frontLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/front.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/front.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- job下的类打印日志 -->
    <appender name="jobLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/job.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/job.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- remote下的类打印日志 -->
    <appender name="remoteLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/remote.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/remote.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- service下的类打印日志 -->
    <appender name="serviceLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/service.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/service.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- 支付日志 -->
    <appender name="payLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/pay.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/pay.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>10</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>100MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <logger name="com.galaxy.fym.common" level="ERROR">
        <appender-ref ref="commonLog"/>
    </logger>
    <logger name="com.galaxy.fym.front" level="ERROR">
        <appender-ref ref="frontLog"/>
    </logger>
    <logger name="com.galaxy.fym.job" level="INFO">
        <appender-ref ref="jobLog"/>
    </logger>
    <logger name="com.galaxy.fym.remote" level="INFO">
        <appender-ref ref="remoteLog"/>
    </logger>
    <logger name="com.galaxy.fym.service" level="INFO">
        <appender-ref ref="serviceLog"/>
    </logger>
    <logger name="com.galaxy.fym.pay.Pay" level="INFO">
        <appender-ref ref="payLog"/>
    </logger>

    <!-- 框架的输出 -->
    <!--<logger name="org.springframework.core" value="ERROR" />
    <logger name="org.springframework.beans" value="ERROR" />
    <logger name="org.springframework.context" value="ERROR" />
    <logger name="org.springframework.web" value="ERROR" />
    <logger name="org.apache.zookeeper" value="ERROR" />-->

    <!-- 对所有的class文件都会起效果 -->
    <root>
        <appender-ref ref="errorLog"/>
    </root>
</configuration>

这个是项目里实际用到的配置,踩了很多坑总结出来的

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

    <!-- 日志总开关,统一在此处配置 -->
    <property name="LOG_LEVEL" value="ERROR" />

    <!-- 日志存放路径 -->
    <property name="LOG_PATH" value="../logs" />

    <jmxConfigurator />

    <!-- error的日志 -->
    <appender name="errorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 一定要加$符号,不然产生不了文件-->
        <File>${LOG_PATH}/error.log</File>
        <!-- 所有ERROR级别的日志文件打印在一个文件里 过滤器只会过滤对应的日志 -->
        <!--过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一。返回DENY,日志将立即被抛弃不再经过其他过滤器;返回NEUTRAL,有序列表里的下个过滤器过接着处理日志;返回ACCEPT,日志会被立即处理,不再经过剩余过滤器。
        过滤器被添加到<Appender> 中,为<Appender> 添加一个或多个过滤器后,可以用任意条件对日志进行过滤。<Appender> 有多个过滤器时,按照配置顺序执行-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>${LOG_LEVEL}</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/error.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- info的日志 记录业务日志-->
    <appender name="infoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件 -->
        <File>${LOG_PATH}/info.log</File>
        <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.FixedWindowRollingPolicy">
            <!-- 超过文件大小会自动分成多个文件保存 数值越小时间越早-->
            <FileNamePattern>${LOG_PATH}/info.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>5</MaxIndex>
        </rollingPolicy>
        <!-- 每份日志文件的大小 -->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <!-- 输出日志的格式 -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd hh:mm:ss.SSS}:[%thread] %-5level %logger{36} : %msg %n</Pattern>
        </layout>
    </appender>

    <!-- 控制台输出日志 -->
    <appender name="stdoutAppender" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </layout>
    </appender>

    <!-- 业务代码日志直接输出在控制台里或者业务日志 -->
    <logger name="com.galaxy.wz" level="INFO">
        <appender-ref ref="stdoutAppender" />
        <appender-ref ref="infoLog" />
    </logger>

    <!-- 对所有的class文件都会起效果 root也可以设置级别的,默认是DEBUG,这里可以记录整个项目所产生的报错日志,当然可以分业务定义 -->
    <root level="${LOG_LEVEL}">
        <appender-ref ref="errorLog"/>
    </root>
</configuration>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

logback使用 的相关文章

随机推荐

  • RuntimeError: CUDA out of memory. Tried to allocate 14.00 MiB (GPU 0; 6.00 G)的解决【实测成功】

    仅作为记录 大佬请跳过 仅需减小batchsize 展示 即可运行 注 博主的这个程序减小batchsize就行了 可能不同的博友们的程序不一样 也有的大佬博主使用不计算梯度或释放内存的方式 不计算梯度 传送门 with torch no
  • python学习7.1文件

    一 open 函数 1 第一个参数 文件名 2 打开方式 1 r 以只读模式打开文件 readlines 以列表形式输出 输入 file open a txt r print file readlines file close 输出 汪湾
  • vue使用threeJs导入obj模型,并添加标注

    效果图 1 安装threeJs npm install three 2 安装轨道控件插件 npm install three orbit controls 3 安装加载 obj和 mtl文件的插件 npm i save three obj
  • Java流程控制(分支结构,迭代结构,转移语句)

    1 分支结构 if else switch 2 迭代结构 while do while for 3 转移语句 break countinue return 4 while 循环 5 do while循环 6 while do while的区
  • ubuntu12.04下Qt5.6设置命令行启动方式

    本菜鸟由于不精通ubuntu 但是需要做项目使用qt 而将qt安装好后想再次打开时候却找不到qt的图标 经过半天的摸索 终于搞清楚怎么打开qt了 特此作出分享 1 方式一 找到安装目录 寻找qtcreator的文件 相当于在windows下
  • SAP ABAP 中的异步调用

    举例场景 创建采购申请的接口中 在执行完BAPI之后返回了一个PR 接着就会执行到commit提交的接口 然如果还需要在创建的时候直接审批 那么就需要再调用PR审批的BAPI 但是你会发现有的PR 在ME23N查看的时候是审批状态 而有的并
  • Android studio连接真机以及找不到设备问题解决

    一 电脑设置 1 检查必要工具是否下载 Android studio gt 右上角的立方体标志 SDK Manager gt 点击 SDK Tools 检查是否下载 Goolge USB Driver 2 驱动安装 点击下一步 gt 完成
  • OpenBlas 安装

    OpenBLAS是BLAS Basic Linear Algebra Subprograms 的优化版 OpenBLAS官网 http www openblas net OpenBLAS公开课 https www leiphone com
  • hadoop学习——flume的简单介绍

    flume介绍 概述 Flume最早是Cloudera提供的日志收集系统 后贡献给Apache 所以目前是Apache下的项目 Flume支持在日志系统中定制各类数据发送方 用于收集数据 Flume是一个高可用的 高可靠的 鲁棒性 robu
  • 记一次malloc失败的经历

    背景 在类OsBufferEntry的成员函数中 为其成员变量m SimplePingResult分配空间 结果报错了 百思不得其解 class OsBufferEntry public QObject Q OBJECT public ex
  • 用git搭建个人博客

    1 安装 Node js 2 安装 Git 3 全局安装Hexo 在命令框中输入 npm install g hexo cli 4 hexo init
  • 分布式事务在Java中的实现与优化

    分布式事务在Java中的实现与优化 分布式系统中的事务处理是一个复杂而关键的问题 随着互联网规模的不断扩大和应用场景的增多 分布式事务的需求也越来越迫切 本文将探讨在Java中实现和优化分布式事务的方法 并提供相应的源代码示例 一 分布式事
  • Error attempting to get column ‘name‘ from result set. Cannot determine value type from string

    Error attempting to get column name from result set Cause java sql SQLDataException Cannot determine value type from str
  • select()函数的作用

    select 在SOCKET编程中还是比较重要的 可是对于初学SOCKET的人来说都不太爱用select 写程序 他们只是习惯写诸如 conncet accept recv 或recvfrom 这样的阻塞程序 所谓阻塞方式block 顾名思
  • 解决windows无法启动sybase服务

    我这里是由于IP原因导致sybase服务启动不了 将sybase 服务的IP修改为本机正确的IP地址后 重启服务成功 1 启动服务报如下错误 2 启动sybase的 Dsedit Utility 3 步骤2执行后打开如下界面 可以看到4个服
  • Windows命名管道&getsystem原理学习记录

    前言 出品 博客 ID moon flower 以下内容 来自博客的moon flower作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作者不承担任何责任 命名管道基
  • 学习笔记:WSL Ubuntu 20.04 LTS 安装中文语言

    环境 系统 Windows 10 Pro 64 WSL子系统 Ubuntu 20 04 LTS 1 安装中文语言包 sudo apt install language pack zh hans 2 设置中文为默认语言 方法一 sudo dp
  • 简单教你美化iPhone电量指示图标

    一样的画面用久了终究会腻的 所以我今天教大家怎样美化自己的iPhone 先从充电图标开始 实际上很简单 iPhone的电量指示就是由17张图片组成的 也就是说我们只要替换这些图片就能改变电量指示图标了 你可以自己做一些图片来替换也可以下载我
  • mysql存储过程批量生成脚本

    删除之前的存储过程 DROP PROCEDURE idata 创建 delimiter create procedure idata begin declare i int set i 1 START TRANSACTION while i
  • logback使用

    1 需要引入maven配置 ch qos logback logback classic 1 0 0 这个会依赖slf4j api和logback core ch qos logback logback access 1 1 5 所有的ja