logback日志组件使用案例
关于logback:
http://www.cnblogs.com/warking/p/5710303.html
使用logback:
idea创建maven项目
修改pom.xml添加依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dylan.java</groupId>
<artifactId>javacore</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
配置logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
<property name="log.base" value="E:/ideaProjects/log/" />
<appender name="startup.console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %msg%n</pattern>
</encoder>
</appender>
<appender name="startup.file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>${log.base}startup.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${log.base}startup_%d{yyyy-MM-dd}.log</FileNamePattern>
<!--保留30天-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!-- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>[%-5level][%d{yyyy-MM-dd HH:mm:ss}][%F:%L] - %msg%n</pattern>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
</encoder> -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
</pattern>
</layout>
</appender>
<root level="ERROR">
<appender-ref ref="startup.console"/>
</root>
<root level="DEBUG">
<appender-ref ref="startup.console"/>
</root>
<root level="DEBUG">
<appender-ref ref="startup.file"/>
</root>
</configuration>
创建测试类:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Random;
/**
* Created by dylan-pc on 2017/10/23.
*/
public class TestLogback {
private static final transient Logger log= LoggerFactory.getLogger(TestLogback.class);
public static void main(String args[]){
//System.out.println("Hello World!");
log.info("程序开始!");
try {
for (int i=1; i<=20; i++){
int r1=(int)(Math.random()*10); //被除数
int r2=(int)(Math.random()*100+99); //除数
log.debug("第"+i+"次计算表达式为:"+r2+"/"+r1);
log.debug("计算结果:"+(r2/r1));
log.info("----------------------------------");
}
}catch (ArithmeticException e){
log.error("程序异常!除数等于0!");
//log.error(e.getStackTrace().toString());
}catch (Exception e){
log.error("程序异常!"+e.getMessage());
}
log.trace("程序结束!");
}
}
查看控制台和日志文件:
22:37:31,675 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
22:37:31,675 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
22:37:31,675 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/E:/ideaProjects/test/javacore/target/classes/logback.xml]
22:37:31,765 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
22:37:31,777 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Will scan for changes in [file:/E:/ideaProjects/test/javacore/target/classes/logback.xml]
22:37:31,777 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 30 seconds
22:37:31,789 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
22:37:31,793 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [startup.console]
22:37:31,863 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
22:37:31,866 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [startup.file]
22:37:31,871 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:19 - no applicable action for [Encoding], current ElementPath is [[configuration][appender][Encoding]]
22:37:31,880 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1026546903 - No compression will be used
22:37:31,882 |-INFO in c.q.l.core.rolling.TimeBasedRollingPolicy@1026546903 - Will use the pattern E:/ideaProjects/log/startup_%d{yyyy-MM-dd}.log for the active file
22:37:31,887 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - The date pattern is 'yyyy-MM-dd' from file name pattern 'E:/ideaProjects/log/startup_%d{yyyy-MM-dd}.log'.
22:37:31,887 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Roll-over at midnight.
22:37:31,890 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Setting initial period to Mon Oct 23 22:36:58 CST 2017
22:37:31,894 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[startup.file] - This appender no longer admits a layout as a sub-component, set an encoder instead.
22:37:31,894 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[startup.file] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
22:37:31,894 |-WARN in ch.qos.logback.core.rolling.RollingFileAppender[startup.file] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
22:37:31,895 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[startup.file] - Active log file name: E:/ideaProjects/log/startup.log
22:37:31,895 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[startup.file] - File property is set to [E:/ideaProjects/log/startup.log]
22:37:31,897 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
22:37:31,897 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [startup.console] to Logger[ROOT]
22:37:31,898 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
22:37:31,898 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [startup.console] to Logger[ROOT]
22:37:31,898 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
22:37:31,898 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [startup.file] to Logger[ROOT]
22:37:31,898 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
22:37:31,899 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@114bc6a3 - Registering current configuration as safe fallback point
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第1次计算表达式为:107/9
[DEBUG][2017-10-23 22:37:31][TestLogback.java:20] - 计算结果:11
[INFO ][2017-10-23 22:37:31][TestLogback.java:21] - ----------------------------------
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第2次计算表达式为:143/9
[DEBUG][2017-10-23 22:37:31][TestLogback.java:20] - 计算结果:15
[INFO ][2017-10-23 22:37:31][TestLogback.java:21] - ----------------------------------
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第3次计算表达式为:192/7
[DEBUG][2017-10-23 22:37:31][TestLogback.java:20] - 计算结果:27
[INFO ][2017-10-23 22:37:31][TestLogback.java:21] - ----------------------------------
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第4次计算表达式为:163/4
[DEBUG][2017-10-23 22:37:31][TestLogback.java:20] - 计算结果:40
[INFO ][2017-10-23 22:37:31][TestLogback.java:21] - ----------------------------------
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第5次计算表达式为:148/4
[DEBUG][2017-10-23 22:37:31][TestLogback.java:20] - 计算结果:37
[INFO ][2017-10-23 22:37:31][TestLogback.java:21] - ----------------------------------
[DEBUG][2017-10-23 22:37:31][TestLogback.java:19] - 第6次计算表达式为:193/0
[ERROR][2017-10-23 22:37:31][TestLogback.java:25] - 程序异常!除数等于0!
[DEBUG][2017-10-23 22:37:31][TestLogback.java:31] - 程序结束!
...
19:39:14.928 [main] DEBUG TestLogback - 第9次计算表达式为:194/5
19:39:14.928 [main] DEBUG TestLogback - 计算结果:38
19:39:14.928 [main] INFO TestLogback - ----------------------------------
19:39:14.928 [main] DEBUG TestLogback - 第10次计算表达式为:160/2
19:39:14.928 [main] DEBUG TestLogback - 计算结果:80
19:39:14.928 [main] INFO TestLogback - ----------------------------------
19:44:39.451 [main] INFO TestLogback - 程序开始!
19:44:39.459 [main] DEBUG TestLogback - 第1次计算表达式为:116/8
19:44:39.459 [main] DEBUG TestLogback - 计算结果:14
19:44:39.459 [main] INFO TestLogback - ----------------------------------
19:44:39.459 [main] DEBUG TestLogback - 第2次计算表达式为:194/5
19:44:39.459 [main] DEBUG TestLogback - 计算结果:38
19:44:39.459 [main] INFO TestLogback - ----------------------------------
19:44:39.459 [main] DEBUG TestLogback - 第3次计算表达式为:109/3
19:44:39.459 [main] DEBUG TestLogback - 计算结果:36
19:44:39.459 [main] INFO TestLogback - ----------------------------------
19:44:39.459 [main] DEBUG TestLogback - 第4次计算表达式为:109/0
19:44:39.459 [main] ERROR TestLogback - 程序异常!
...
logback日志组件使用案例的更多相关文章
- Logback 日志组件的使用
Logback 是由 log4j 创始人设计的又一个开源日志组件. 一. logback 的介绍 logback 当前分成三个模块:logback-core,logback- classic 和 ...
- 五分钟秒懂Java日志组件
Java中有许多种日志记录方式,有些API有占位符,有些API没占位符,初学的人可能会搞不清楚这些日志组件的由来.我一开始的时候也是很懵逼的,后来一点点弄懂了于是就又了这篇文章. 在Java中进行日志 ...
- java日志组件介绍(common-logging,log4j,slf4j,logback )
转自:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging是apache提供的一个通用的日志 ...
- 转:java日志组件介绍(common-logging,log4j,slf4j,logback )
原网址:http://www.blogjava.net/daiyongzhi/archive/2014/04/13/412364.html common-logging common-logging是 ...
- 日志组件logback的介绍及配置使用方法
一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-acc ...
- 日志组件 logback
一.简介 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logb ...
- 【转】java日志组件介绍(common-logging,log4j,slf4j,logback )
common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, comm ...
- 日志处理(二) 日志组件logback的介绍及配置使用方法(转)
本文转自:http://www.cnblogs.com/yuanermen/archive/2012/02/13/2348942.html http://www.cnblogs.com/yuanerm ...
- 转:日志组件logback的介绍及配置使用方法
转自:http://blog.csdn.net/zgmzyr/article/details/8267072 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.lo ...
- 日志组件logback的介绍及配置使用方法(一)
一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-acc ...
随机推荐
- [转帖]ntp导致的时钟回拨
https://zhuanlan.zhihu.com/p/587313130 我们的服务器时间校准一般是通过ntp进程去校准的.但由于校准这个动作,会导致时钟跳跃变化的现象.而这种情况里面,往往回拨最 ...
- [转帖]clickhouse安装部署以及版本选取
https://www.cnblogs.com/MrYang-11-GetKnow/p/15818768.html 1. 系统要求 ClickHouse 可以在任何具有 x86_64.AArch64 ...
- [转帖]PostgreSQL 统计所有数据表各自的总行数
一般来说,可以使用 count(*) 来获取具体某张表的总行数: SELECT count(0) FROM t_user; 如果想获得所有表的行数信息,可以使用以下 SQL 语句: SELECT re ...
- [转帖]Influxdb 2.x 快速入门
Influxdb 2.x 快速入门 https://www.jianshu.com/p/268fca65f10e Influxdb是由Golang 构建的时序数据库,由于由Go语言构建使得其跨平台部署 ...
- [转帖]金仓数据库KingbaseES V8R6索引坏块故障处理
案例说明: 在执行表数据查询时,出现下图所示错误,索引故障导致表无法访问,后重建索引问题解决.本案例复现了此类故障解决过程. 适用版本: KingbaseES V8R3/R6 一.创建测试环境 # 表 ...
- ipset的学习与使用
ipset的学习与使用 场景说明 虽然可以通过: firewall-cmd --zone=trusted --add-source=$1 --permanent && firewall ...
- [转帖]Linux下strace调试系统应用参数总结(附实例操作讲解)
文章目录 一.简介 二.常用参数详解 三.实例详解 3.1 跟踪具体进程 3.2 监控具体程序执行过程 四.其他相关知识链接 一.简介 strace命令是一个集诊断.调试.统计与一体的Linux 用户 ...
- 可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP
P8946 - The Lost Symbol 这种类型的 dp 的特点就是大部分转移形如 \(f(i,j)\rightarrow f(i+1,j+1)\) 之类的,并且当以上转移出现时原数组被清空, ...
- vue3.2如何将写hooks呢?
场景 有些时候,我们需要将一个页面拆分成各个模块. 这些模块包含增加,删除,修改,等 并且这些模块会处理非常复杂的业务逻辑问题 所以,我们最好是将他们分开. 如何将分离新增模块拆离出去 主页面 < ...
- iOS转场之present与dismiss的使用
present的使用方式 present只能是A present B , B present C , C present D这样的链式弹出. 不能A present B , A present C , ...