java日志
java日志
概述
项目开发中,记录错误日志有以下好处:
- 方便调试
- 便于发现系统运行过程中的错误
- 存储业务数据,便于后期分析
日志输出级别
logger.debug(); //指出信息事件
logger.info(); 程序运行过程
logge.warn(); 表名会出现潜在错误的情形(未知的错误)
logger.error(); 指出虽然发生错误事件,但是不影响程序的运行
logger.fatal(); 指出严重的错误事件将会导致程序退出,
debug<info<warn<error<fatal
通过修改日志文件器log4j.properties 将只输出高于或者等于他级别信息
例如log4j.rootLogger= debug,console,logfile
如果设置info 那么只会打印info,warn,error,fatal级别内容 而debug不会打印
根据实际情况进行使用 主要区分 不同情况出现的问题
虽然 随便使用不会有问题 但是 这影响到 看日志的人 这到底是bug 还是 正常执行时进行的操作 还是什么 ??
实现日志的步骤
需要的依赖
log4j-1.2.17.jar
下载地址:
Maven
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j.properties配置文件
## 设置Logger输出级别和输出目的地(可以指定多个目的地) ###
### 一般在开发的时候使用debug,开发完成后使用error ###
### 他们对应的是输出信息的级别,级别越低信息输出越详细,使用debug级别的时候,info中的信息也能输出,使用info的时候,debug对应的信息显示不出来 ###
### 日志记录器输出级别:fatal>error>warn>info>debug ###
### 后面的两个对应下方的两处 一处打印在控制台 另一处打印在日志文件里
log4j.rootLogger=debug,console,logFile
#############################################################################################
### 把日志信息输出到控制台 ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
### 信息打印到System.err上,红色 ###
log4j.appender.console.Target=System.out
### 指定日志在控制台上输出的布局类型 采用指定格式的类型 ###
log4j.appender.console.layout=org.apache.log4j.PatternLayout
### %r:输出自应用启动到输出该 log信息耗费的毫秒数 %x表示信息输出时左对齐
### %5p:%p表示输出日志信息优先级,即 DEBUG, INFO, WARN, ERROR, FATAL 中间的5控制最小的宽度为5
### %F:%L %F:输出日志消息产生时所在的文件名称 %L:输出代码中的行号
### %l:输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数
### %m:输出代码中指定的消息,产生的日志具体信息 %n:输出一个回车换行符, Windows 平台为"\r\n", Unix 平台为"\n"输出日志信息换行
log4j.appender.console.layout.ConversionPattern= -> (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
#############################################################################################
#############################################################################################
### 把日志信息输出到文件:logt.log 注意:如果有路径\符号一定要写成\\ 否则会被转义 ###
log4j.appender.logFile=org.apache.log4j.FileAppender
### 指定日志输出的文件名 ###
log4j.appender.logFile.File=D:\\log.log
### 指定转换模式 ###
log4j.appender.logFile.layout=org.apache.log4j.PatternLayout
### 指定日志布局类型 ###
###log4j.appender.logFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
###log4j.appender.logFile.layout.ConversionPattern= -> (%r ms) - %d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n
log4j.appender.logFile.layout.ConversionPattern= -> (%r ms) - %d{yyyy-MM-dd HH:mm:ss}%x[%5p]%l %m%n
#############################################################################################
这里注意 log4j.appender.logFile.File= 这里是你日志存放的地方
其他的几乎不用动
-
添加log4j依赖和log4j配置文件
依赖要放在lib目录下并且解析
配置文件要放在resource目录下
-
然后修改 文件 的log4j.appender.logFile.File=路径
路径格式不要是中文 不然会找不到路径 路径分割符一定要\\
log4j.appender.logFile.File=C:\\Users\\log.log
-
在使用的时候 导入import org.apache.log4j.Logger;
特别注意不要导入错误了
-
添加静态成员属性
public static Logger logge=Logger.getLogger(当前类.class);
然后就可以通过logge.xxx来写日志了
测试:
package cn.htsa.www.test;
import org.apache.log4j.Logger;
import org.junit.Test;
public class test {
public static Logger logge=Logger.getLogger(test.class);
@Test
public void showriz() {
logge.debug("debug");
logge.info("info");
logge.warn("warn");
logge.error("error");
logge.fatal("fatal");
}
}
本地D:下的,log.log文件内显示结果
-> (0 ms) - 2020-06-22 18:04:43[DEBUG]cn.htsa.www.test.test.showriz(test.java:19) debug
-> (7 ms) - 2020-06-22 18:04:43[ INFO]cn.htsa.www.test.test.showriz(test.java:20) info
-> (8 ms) - 2020-06-22 18:04:43[ WARN]cn.htsa.www.test.test.showriz(test.java:21) warn
-> (8 ms) - 2020-06-22 18:04:43[ERROR]cn.htsa.www.test.test.showriz(test.java:22) error
-> (8 ms) - 2020-06-22 18:04:43[FATAL]cn.htsa.www.test.test.showriz(test.java:23) fatal
打印的日志信息 格式
输出日志毫秒 日期时间 日志级别 文件路径.文件位置.方法 输出日志的行号
(行号有可能发生轻度偏移和实际位置不一致 ,但是就在那一片找找就能找到)
上一篇: .net core填坑记录
下一篇: Java学习之:使用反射实现工厂设计模式