文档章节

logback日志配置

时光男孩
 时光男孩
发布于 2015/09/06 14:52
字数 842
阅读 65
收藏 0

logback日志配置

一、简介:

logback是一个可靠、通用、快速而又灵活的Java日志框架。 声称要取代log4j.Logback is intended as a successor to the popular log4j projec

logback当前分成三个模块:logback-core,logback- classic和logback-access。

logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。

logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。 logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

所以,导入的架包必须有以下:

若实现日志保存到mysql数据库,还需要:

以日志导入到mysql数据库为例(maven项目):

pom.xml配置:

<!-- Logging with SLF4J & LogBack -->

      <dependency>

         <groupId>org.slf4j</groupId>

         <artifactId>slf4j-api</artifactId>

         <version>${slf4j.version}</version>

         <scope>compile</scope>

      </dependency>

      <dependency>

         <groupId>ch.qos.logback</groupId>

         <artifactId>logback-classic</artifactId>

         <version>${logback.version}</version>

         <scope>runtime</scope>

      </dependency>

<dependency>

         <groupId>mysql</groupId>

         <artifactId>mysql-connector-java</artifactId>

         <version>5.1.25</version>

      </dependency>

      <dependency>

         <groupId>commons-dbcp</groupId>

         <artifactId>commons-dbcp</artifactId>

         <version>1.4</version>

      </dependency>

在mysql中创建3张表(一定要手动建立,logback不会自动生成):

语句如下:

BEGIN;

DROP TABLE IF EXISTS logging_event_property;

DROP TABLE IF EXISTS logging_event_exception;

DROP TABLE IF EXISTS logging_event;

COMMIT;

 

BEGIN;

CREATE TABLE logging_event

  (

    timestmp         BIGINT NOT NULL,

    formatted_message  TEXT NOT NULL,

    logger_name       VARCHAR(254) NOT NULL,

    level_string      VARCHAR(254) NOT NULL,

    thread_name       VARCHAR(254),

    reference_flag    SMALLINT,

    arg0              VARCHAR(254),

    arg1              VARCHAR(254),

    arg2              VARCHAR(254),

    arg3              VARCHAR(254),

    caller_filename   VARCHAR(254) NOT NULL,

    caller_class      VARCHAR(254) NOT NULL,

    caller_method     VARCHAR(254) NOT NULL,

    caller_line       CHAR(4) NOT NULL,

    event_id          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY

  );

COMMIT;

BEGIN;

CREATE TABLE logging_event_property

  (

    event_id          BIGINT NOT NULL,

    mapped_key        VARCHAR(254) NOT NULL,

    mapped_value      TEXT,

    PRIMARY KEY(event_id, mapped_key),

    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)

  );

COMMIT;

BEGIN;

CREATE TABLE logging_event_exception

  (

    event_id         BIGINT NOT NULL,

    i                SMALLINT NOT NULL,

    trace_line       VARCHAR(254) NOT NULL,

    PRIMARY KEY(event_id, i),

    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)

  );

COMMIT;

新建logBack.xml文件并进行配置如下:

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

<configuration> 

    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->   

    <property name="LOG_HOME" value="E:/log" />   

    <!-- 控制台输出 -->    

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 

       <!-- 日志输出编码 -->   

       <Encoding>UTF-8</Encoding>    

        <layout class="ch.qos.logback.classic.PatternLayout">    

             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->  

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n    

            </pattern>    

        </layout>    

    </appender>    

    <!-- 按照每天生成日志文件 -->    

    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">    

        <Encoding>UTF-8</Encoding>    

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 

            <!--日志文件输出的文件名--> 

            <FileNamePattern>${LOG_HOME}/myProject.log.%d{yyyy-MM-dd}.log</FileNamePattern>    

            <MaxHistory>30</MaxHistory> 

        </rollingPolicy>    

        <layout class="ch.qos.logback.classic.PatternLayout">   

            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->  

            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n    

            </pattern>    

       </layout>  

        <!--日志文件最大的大小--> 

       <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 

         <MaxFileSize>10MB</MaxFileSize> 

       </triggeringPolicy> 

    </appender>  

   <!-- show parameters for hibernate sql 专为 Hibernate 定制 -->   

    <logger name="org.hibernate.type.descriptor.sql.BasicBinder"  level="TRACE" />   

    <logger name="org.hibernate.type.descriptor.sql.BasicExtractor"  level="DEBUG" />   

    <logger name="org.hibernate.SQL" level="DEBUG" />   

    <logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />   

    <logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />   

 

      

     <!--日志异步到数据库 -->   

    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 

        <!--日志异步到数据库 -->  

        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 

           <!--连接池 -->  

           <dataSource class="org.apache.commons.dbcp.BasicDataSource"> 

              <driverClass>com.mysql.jdbc.Driver</driverClass> 

              <url>jdbc:mysql://127.0.0.1:3306/数据库</url> 

              <user>用户名</user> 

              <password>密码</password> 

            </dataSource>  

        </connectionSource> 

  </appender>

     

    <!-- 日志输出级别 --> 

    <root level="INFO">    

        <appender-ref ref="STDOUT" />    

        <appender-ref ref="FILE" />

        <appender-ref ref="DB" />     

    </root>  

</configuration> 

 

使用与log4j相同:

private static final Logger logger=LoggerFactory.getLogger(类名.class);

logger.info(“日志内容”);

logger.error(“错误日志内容”);

logger.warn(“警告内容”);

© 著作权归作者所有

上一篇: Derby使用
下一篇: JAVA NIO
时光男孩
粉丝 6
博文 11
码字总数 7259
作品 0
浦东
技术主管
私信 提问

暂无文章

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部