Java log日志
## 1. 日志框架
在系统中对于记录日志.首先,我们希望日志要能持久化到磁盘,最基本的就是要能够保存到文件中;其次,我们希望在开发和生产环境中记录的日志并不相同,明显开发环境的日志记录会更多方便调试,但放到生产环境下大量的日志很容易会撑爆服务器,因此在生产环境我们希望只记录重要信息。 使用ommons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构(如Log4j)。现在,Apache通用日志工具commons-logging和Log4j已经成为Java日志的标准工具。
## 2. 日志级别
log4j主要有如下的信息级别:
fatal:非常严重的错误,导致系统中止。期望这类信息能立即显示在状态控制台上。
error:其它运行期错误或不是预期的条件。期望这类信息能立即显示在状态控制台上。
warn:使用了不赞成使用的API、非常拙劣使用API, ‘几乎就是’错误, 其它运行时不合需要和不合预期的状态但还没必要称为 “错误”。期望这类信息能立即显示在状态控制台上。
info:运行时产生的有意义的事件。期望这类信息能立即显示在状态控制台上。
debug:系统流程中的细节信息。期望这类信息仅被写入log文件中。
trace:更加细节的信息。期望这类信息仅被写入log文件中。
控制生成环境和开发环境输出的信息不同就很简单了,我可以配置一个最低的日志输出级别,在开发环境我设置为DEBUG,也就是所有的日志信息都能输出。在生产环境我可以设置为WARN,也就是只有WARN及以上级别的日志才会被输出,这样是不是就可以在不同的环境控制不同的日志输出了。
3. 配置文件
这里有一个日志的格式,也就是 ConversionPattern,那么这个值到底该如何配置呢?
%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,通常就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:输出一个"%"字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
%20c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
%-20c:"-"号表示左对齐。
%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。
一个简单的log4j配置文件的案例如下:
### 设置###
log4j.rootLogger=DEBUG,stdout,E
log4j.logger.io.netty=WARN
log4j.logger.com.mchange=WARN
### 输出信息到控制抬 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%p %d{HH:mm:ss} [%c:%L] %m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=E://logs/log.log
log4j.appender.D.Append=true
## 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=E://logs/error.log
log4j.appender.E.Append=true
log4j.appender.E.Threshold=ERROR
log4j.appender.E.layout=org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
Java log日志相关推荐
- java+log日志服务器_Logserver日志服务器结构
一个日志服务架构主要包括3个部分:日志采集agent,日志存储,及日志浏览 本日志服务方案采用logstash+elasticsearch+kibana的组合搭建,其中logstash负责日志的采集和 ...
- java log日志函数_Java 中的 AWS Lambda 函数日志记录 - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异.要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门. 本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. Ja ...
- Java log日志(一):介绍Log4j
参考url: https://blog.csdn.net/u011781521/article/details/55002553 1.概述 1.1 什么是Log4j Log4j是Apache的一个开源 ...
- 简单的java日志记,Java 记要 日志,log
Java 记录 日志,log, public class LogUtil { private static Logger log = Logger.getLogger(LogUtil.class.ge ...
- log日志的java动态代理
问题描述:今天老大告诉我说系统的Log日志要修改,有些参数不能打印,有些参数不能打印,有些参数要替换部分内容,要求系统要尽量小的修改.我修改了一天,现记录如下. 思路: 思路一. 定义方法,传入要打印 ...
- java 打印日志log_java打印log日志
java日志详解_电子/电路_工程科技_专业资料.浅谈 JAVA 中的日志文件 log4 的使用方法:log4 是具有日志记录功能,主要通过一个配置文件来对程序进行监测 有两种...... 配置到文件 ...
- java中log日志的使用(完全版)
Commons_logging包 Apache通用日志包 他为Log4JLogger:NoOpLog:LogKitLogger:Jdk14Logger:AvalonLogger提供了一共通用的接口进行 ...
- Java Log Viewer日志查看器
工欲善其事必先利其器 在投奔怒海--一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题.服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息 ...
- java常见log日志的使用方法详细解析
目录 前言 1. Java.util.Logger 2. org.apache.logging.log4j 2.1 xml配置文件 3. org.slf4j.Logger 前言 log日志可以debu ...
最新文章
- 使用显式Intent向下一个活动传递数据
- 表格中内容过多时采用省略号,鼠标移上去显示全部内容
- 10060 mysql_navicat连接mysql服务端报10060错误解决过程如下
- struts1和2的区别总结
- 数模2019暑期培训Day1
- cs架构(cs架构和bs架构的区别)
- 在职阿里3年,一个27岁女软件测试工程师的心声
- 整理--linux设备驱动模型
- 【Python问题解决】---- ERROR: Could not install packages due to an OSError: [WinError 2] 系统找不到指定的文件。
- Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors(数论)
- Word快速转换幻灯片文稿(转)
- wait()、notify()、notifyAll()使用详解
- php图床api源码,京东免费图床上传接口php源码
- ValueError With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empt
- Java基础篇--继承(inherit),多态(Polymorphism)
- 台式计算机除尘方法,台式电脑除尘方法 让你的电脑焕然一新
- ie8 ajax拒绝访问的解决办法
- 大数据算法系列10:字符串检验算法
- Photoshop CC 2017 For Mac安装教程
- 关于Unity如何创建静态动画图片