logback日志配置

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(“警告内容”);

你可能感兴趣的:(java,log4j,logback,javaweb)