您的位置:首页 > 其它

logback常用配置

2016-01-05 00:00 253 查看
摘要: logback-classic-1.1.3.jar
logback-core-1.1.3.jar
slf4j-api-1.7.12.jar

1实现.控制台输出

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<target>System.out</target>
<encoder>
<Pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36}-%msg%n </Pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
</appender>
<appender name="STDOUT_ERROR" class="ch.qos.logback.core.ConsoleAppender">
<target>System.err</target>
<encoder>
<Pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n </Pattern>
<charset>utf-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>

2实现:将所有的日志消息一直追加到指定的文件中

<appender name="FILE_APPEND" class="ch.qos.logback.core.FileAppender">
<file>F:/log/test/logback.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} -%msg%n </Pattern>
<charset>utf-8</charset>
</encoder>
<append>true</append>
</appender>

3实现:每天产生一个日志文件且只保存最近10天的日志

<appender name="FILE_LIMITED_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F:/log/test/today.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern>
<charset>utf-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>F:/log/test/%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 10 day -->
<maxHistory>10</maxHistory>
</rollingPolicy>
</appender>

4实现.一天产生一个日志,如果当天日志超过10M将进行再分割

<appender name="FILE_DAILY_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F:/log/test/today.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern> %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n </Pattern>
<charset>utf-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>F:/log/test/%d.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>

5实现:所有的日志消息追加到一个日志文件中,如果该文件超过100M,就将其打包成zip.(归档个数不限)
注意:*fileNamePattern不能使用%d,
*如果归档文件名为backup%i.zip,那么日志文件的后缀名(log)将丢失


<appender name="FILE_ARCHIVE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F:/log/test/logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>F:/log/test/backup%i.log.zip</fileNamePattern>     </rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>     </triggeringPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{36} - %msg%n</pattern>     </encoder>
</appender>

6实现: 【在5实的基础上添加】只保存最近的3个归档文件(.zip)

<appender name="FILE_LIMITED_ARCHIVE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>F:/log/test/logback.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>F:/log/test/backup%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>     </rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>100MB</maxFileSize>     </triggeringPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{36} - %msg%n</pattern>     </encoder>
</appender>

7.输出到数据库

<!--日志异步到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<!--日志异步到数据库 -->
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<!--连接池 -->
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender>

建表如下:

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: