2.logback+slf4j+janino 配置项目的日志输出
作者QQ:1095737364 QQ群:123300273 欢迎加入!
1.创建项目
参考:http://www.cnblogs.com/yysbolg/p/6898453.html
2.导入包:在全局工程的pom.xml下
- <!--所有版本号定义-->
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <logback.version>1.1.7</logback.version>
- <slf4j.version>1.7.21</slf4j.version>
- <janino.version>2.7.8</janino.version>
- </properties>
- <dependencies>
- <!-- 日志文件管理包 -->
- <!-- logback+slf4j -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j.version}</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-core</artifactId>
- <version>${logback.version}</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-access</artifactId>
- <version>${logback.version}</version>
- </dependency>
- <dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>${logback.version}</version>
- </dependency>
- <!-- 日志文件管理包-提高性能log输出性能 -->
- <!-- janino -->
- <dependency>
- <groupId>org.codehaus.janino</groupId>
- <artifactId>commons-compiler</artifactId>
- <version>${janino.version}</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.janino</groupId>
- <artifactId>janino</artifactId>
- <version>${janino.version}</version>
- </dependency>
- </dependencies>
3.在http模块下的resources资源文件夹下面创建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">
- <!-- 动态日志级别 -->
- <jmxConfigurator />
- <!-- 定义日志文件 输出位置 -->
- <property name="log_dir" value="myCat_log" />
- <!-- 日志最大的历史 30天 -->
- <property name="maxHistory" value="30" />
- <!-- ConsoleAppender 控制台输出日志 -->
- <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
- <encoder>
- <pattern>
- <!-- 设置日志输出格式 -->
- [%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
- </pattern>
- </encoder>
- </appender>
- <!-- ERROR级别日志 -->
- <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
- <appender name="ERROR"
- class="ch.qos.logback.core.rolling.RollingFileAppender">
- <!-- 过滤器,只记录WARN级别的日志 -->
- <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
- <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}/error/%d{yyyy-MM-dd}/error-log.log
- </fileNamePattern>
- <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,
删除旧文件是,那些为了归档而创建的目录也会被删除 -->- <maxHistory>${maxHistory}</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>
- <!-- 设置日志输出格式 -->
- [%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
- </pattern>
- </encoder>
- </appender>
- <!-- WARN级别日志 appender -->
- <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <!-- 过滤器,只记录WARN级别的日志 -->
- <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
- <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">
- <!--日志输出位置 可相对、和绝对路径 -->
- <fileNamePattern>${log_dir}/warn/%d{yyyy-MM-dd}/warn-log.log</fileNamePattern>
- <maxHistory>${maxHistory}</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- INFO级别日志 appender -->
- <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <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">
- <fileNamePattern>${log_dir}/info/%d{yyyy-MM-dd}/info-log.log</fileNamePattern>
- <maxHistory>${maxHistory}</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- DEBUG级别日志 appender -->
- <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <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">
- <fileNamePattern>${log_dir}/debug/%d{yyyy-MM-dd}/debug-log.log</fileNamePattern>
- <maxHistory>${maxHistory}</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- TRACE级别日志 appender -->
- <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- <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">
- <fileNamePattern>${log_dir}/trace/%d{yyyy-MM-dd}/trace-log.log</fileNamePattern>
- <maxHistory>${maxHistory}</maxHistory>
- </rollingPolicy>
- <encoder>
- <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
- </encoder>
- </appender>
- <!-- root级别 DEBUG -->
- <root>
- <!-- 打印debug级别日志及以上级别日志 -->
- <level value="debug" />
- <!-- 控制台输出 -->
- <appender-ref ref="console" />
- <!-- 文件输出 -->
- <appender-ref ref="ERROR" />
- <appender-ref ref="INFO" />
- <appender-ref ref="WARN" />
- <appender-ref ref="DEBUG" />
- <appender-ref ref="TRACE" />
- </root>
- </configuration>
4.在http模块下的src下新建 LogbackTest.java 文件
- package com.service;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class LogbackTest {
- private final static Logger logger = LoggerFactory.getLogger(LogbackTest.class);
- public static void main(String[] args) {
- logger.debug("输出debug级别的日志.....");
- logger.info("输出info级别的日志.....");
- logger.error("输出error级别的日志.....");
- }
- }
5.测试:运行LogbackTest 的 main 方法:执行后实现效果如下:
2.logback+slf4j+janino 配置项目的日志输出的更多相关文章
- Logback 整合 RabbitMQ 实现统一日志输出
原文地址:Logback 整合 RabbitMQ 实现统一日志输出 博客地址:http://www.extlight.com 一.前言 公司项目做了集群实现请求分流,由于线上或多或少会出现请求失败或系 ...
- Hibernate日志输出到SLF4J
一,Hibernate日志问题 工程使用SLF4J,但日志文件一直没有看到Hibernate相关日志及showsql 二,Logback文件配置 修改Hibernate 日志输出指定为SLF4J,当修 ...
- 使用 logback + slf4j 进行日志记录
此处主要介绍maven web工程下如何使用 logback + slf4j 进行日志记录. logback主要包含三个组成部分:Loggers(日志记录器).Appenders(输出目的在).La ...
- JAVA中使用log4j及slf4j进行日志输出的方法详解
JAVA中输出日志比较常用的是log4j,这里讲下log4j的配置和使用方法,以及slf4j的使用方法. 一.下载log4j的架包,并导入项目中,如下: 二.创建log4j.properties配置 ...
- Log4j,Log4j2,logback,slf4j日志学习
日志学习笔记 Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条 ...
- [日志] spring boot + logback 日志输出配置
一.输出日志到控制台 springboot有很多starter(参考starter)方便快速构建项目依赖组件,logback是springboot默认的日志组件,启动即可看到打印在控制台输出的info ...
- springboot+logback日志输出企业实践(上)
目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...
- Log4j,Log4j2,logback,slf4j日志学习(转)
日志学习笔记Log4jLog4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.数据库等:我们也可以控制每一条日志的输出格式:通过定义每一条日志 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
随机推荐
- 如何在vue中全局引入stylus文件的公共变量
新建 一个公共的stylus公共文件添加公共变量,如下: 修改下图圈出的文件: 具体的修改如下: // generate loader string to be used with extract t ...
- 基于Django+celery二次开发动态配置定时任务 ( 一 )
需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...
- Python语法基础练习
- 提取PPT中的原始图片
写Word的不如做Excel 的,做Excel不如做PPT的,写代码的不如做PPT. 为了在电子邮件中上传PPT,其中的图片大都经过压缩,以便缩小PPT的体积.那么如何将PPT中的图片,还原成没有经过 ...
- .NET跨平台实践:再谈用C#开发Linux守护进程 — 完整篇
Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展 ...
- php -- 文件读写
----- 024-file.php ----- <!DOCTYPE html> <html> <head> <meta http-equiv="c ...
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二):数据库设计
数据库设计 系统主要包含用户(sys_user).组织(sys_dept).角色(sys_role).菜单(sys_menu).角色组织(sys_role_dept).角色菜单(sys_role_me ...
- 关于VS2017的安装和WDK的选择问题
首先就是关于VS2017的安装,我们可以通过微软的官网去寻找我们想要安装的VS版本 我们可以随便选择一个我们需要的版本进行下载,任意版本的VS都可以. 然后下载安装的时候,要进行一下这个安装选项的选择 ...
- Conditional特性用法
说明:根据预处理标识符执行方法.Conditional 特性是 ConditionalAttribute 的别名,可应用于方法或属性类.相对于#if和#endif,更灵活更简洁和不易出错. 例如: # ...
- 使用显式的Lock对象取代synchronized关键字进行同步
Java SE5的java.util.concurrent类库还包含有定义在java.util.concurrent.locks中的显式的互斥机制.Lock对象必须被显式地创建.锁定和释放.因此,它与 ...