## 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日志相关推荐

  1. java+log日志服务器_Logserver日志服务器结构

    一个日志服务架构主要包括3个部分:日志采集agent,日志存储,及日志浏览 本日志服务方案采用logstash+elasticsearch+kibana的组合搭建,其中logstash负责日志的采集和 ...

  2. java log日志函数_Java 中的 AWS Lambda 函数日志记录 - AWS Lambda

    AWS 文档中描述的 AWS 服务或功能可能因区域而异.要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门. 本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. Ja ...

  3. Java log日志(一):介绍Log4j

    参考url: https://blog.csdn.net/u011781521/article/details/55002553 1.概述 1.1 什么是Log4j Log4j是Apache的一个开源 ...

  4. 简单的java日志记,Java 记要 日志,log

    Java 记录 日志,log, public class LogUtil { private static Logger log = Logger.getLogger(LogUtil.class.ge ...

  5. log日志的java动态代理

    问题描述:今天老大告诉我说系统的Log日志要修改,有些参数不能打印,有些参数不能打印,有些参数要替换部分内容,要求系统要尽量小的修改.我修改了一天,现记录如下. 思路: 思路一. 定义方法,传入要打印 ...

  6. java 打印日志log_java打印log日志

    java日志详解_电子/电路_工程科技_专业资料.浅谈 JAVA 中的日志文件 log4 的使用方法:log4 是具有日志记录功能,主要通过一个配置文件来对程序进行监测 有两种...... 配置到文件 ...

  7. java中log日志的使用(完全版)

    Commons_logging包 Apache通用日志包 他为Log4JLogger:NoOpLog:LogKitLogger:Jdk14Logger:AvalonLogger提供了一共通用的接口进行 ...

  8. Java Log Viewer日志查看器

    工欲善其事必先利其器 在投奔怒海--一个Domino老程序员眼里的Java开发我提到目前所做的Java开发中遇到的大量日志之问题.服务器控制台刷屏似地滚动,日志文件飞快地增长,debug的时候相关信息 ...

  9. java常见log日志的使用方法详细解析

    目录 前言 1. Java.util.Logger 2. org.apache.logging.log4j 2.1 xml配置文件 3. org.slf4j.Logger 前言 log日志可以debu ...

最新文章

  1. 使用显式Intent向下一个活动传递数据
  2. 表格中内容过多时采用省略号,鼠标移上去显示全部内容
  3. 10060 mysql_navicat连接mysql服务端报10060错误解决过程如下
  4. struts1和2的区别总结
  5. 数模2019暑期培训Day1
  6. cs架构(cs架构和bs架构的区别)
  7. 在职阿里3年,一个27岁女软件测试工程师的心声
  8. 整理--linux设备驱动模型
  9. 【Python问题解决】---- ERROR: Could not install packages due to an OSError: [WinError 2] 系统找不到指定的文件。
  10. Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors(数论)
  11. Word快速转换幻灯片文稿(转)
  12. wait()、notify()、notifyAll()使用详解
  13. php图床api源码,京东免费图床上传接口php源码
  14. ValueError With n_samples=0, test_size=0.2 and train_size=None, the resulting train set will be empt
  15. Java基础篇--继承(inherit),多态(Polymorphism)
  16. 台式计算机除尘方法,台式电脑除尘方法 让你的电脑焕然一新
  17. ie8 ajax拒绝访问的解决办法
  18. 大数据算法系列10:字符串检验算法
  19. Photoshop CC 2017 For Mac安装教程
  20. 关于Unity如何创建静态动画图片

热门文章

  1. Linux驱动之 原子操作
  2. LDR6290-QFN28 做Type-C台式显示器 一线通大功率PD3.0 快充与在线升级的运用
  3. 深度学习 学习笔记总结
  4. Redis新版本发布,你还认为Redis是单线程?
  5. 开源运行时社区 - 核心概念说明
  6. 【持续更新-34家】百亿量化私募名单-2022年7月27日
  7. 手把手教你实战开发黑白棋实时对战游戏
  8. 财报数据知冷暖:欧洲电信市场整体复苏中
  9. CV算法工程师自修指南
  10. java怎么把背景设成纯透明,怎么把BufferedImage设置背景为透明