8535.com-新浦京娱乐场官网|欢迎您

Java中 log4j日志级别配置详解,javalog4j

来源:http://www.dnamique.com 作者:计算机网络 人气:92 发布时间:2019-10-07
摘要:Java中 log4j日志等级配备详解,javalog4j 1.1 前言 讲出去真是丢脸,近年来被商家派到顾客公司面试外包开采岗位,本来筹划了什么redis、rabbitMQ、SSM框架的相关面试题以及自个儿做过的一

Java中 log4j日志等级配备详解,javalog4j

1.1 前言

  讲出去真是丢脸,近年来被商家派到顾客公司面试外包开采岗位,本来筹划了什么redis、rabbitMQ、SSM框架的相关面试题以及自个儿做过的一部分项目回想,信心满到处去面试,结果人家一上来就问到了近期项目选取的日记系统是哪些?日志等第是怎么安排的?那时候小编都蒙X了,平日都以项目首席营业官搭的,小编要好也是无论上网一搜往配置文件一黏贴就OK了。小编仿佛此讲罢前边试官深深定了自己一眼,那时自己的心目可耻到......

1.2 闲话少说,讲讲日志的升华轶事(假设已经通晓的能够跳过,直接看1.3日记配置)

新浦京娱乐场官网,  要想对日记技能达成深刻摸底,笔者个人提议去看:logback + slf4j。至于日志配置,依然了然log4j对比好,因为最近多方的种类依然采取log4j的。好了,上边最早讲讲日志的腾飞传说:

  1997年,Apache开源社区发表了log4j,一时惊动整个程序界,从此成为日志的正儿八经并普及为java程序员所运用。随后Sun公司也在JDK1.4本牛时表露了Logging机制(java.util.logging,以下简称JUL),不过该机制尚未获得民众的确认,真是极其。不久Apache又推出了commons-logging日志框架(能够让开垦者抽象日志实现形式而不要关切现进行使哪个日志才干,通俗地说正是您要用手提式有线电话机叫滴滴,如若你是在京都你就能叫来新加坡的滴滴,在香港(Hong Kong)你就能够叫来香江的滴滴),该框架好疑似对Sun公司的鄙睨,其得以自动寻找调用当前蒙受下的日志本领实行日志输出,该日记框架可支撑log4j或JUL。commons-logging+log4j在以往的不长一段时间内化为了Java日志的优良组合。然则随后commons-logging有一段时间没更新了,不知道是还是不是commons-logging当初的统一准备非常不足好,想再优化也相当多艰辛,为何这么说呢?因为接下去多少个精粹的日志框架slf4j诞生了,该小编(Ceki Gülcü)正是log4j的撰稿人之一,他的slf4j设计上更高贵,况兼她还落到实处了logback技能,也是比log4j更前方。至此,日志体系由commons-logging+log4j一家独大的层面起始面前境遇动摇,各类commons-logging+log4j?slf4j+log4j?slf4j+logback?搭配,真是令人操心。更可怕之处,Ceki Gülcü大佬又支持优化了log4j,从此世界又多了一项日志才干--log4j2。那是要学Tencent搞微信和QQ吗,真是666。由此,假若我们想对日记手艺深入摸底的话,可以去找找logback + slf4j的相干材料。至于配置文件,笔者以为你就理解下自个儿上边写的log4j配置详解就好了,究竟今后照旧非常多集团用log4j框架的。

1.3 步向正题,log4j日志基本配备

1.在类型的classpath下恐怕resource包下(maven项目)新建两个log4j.properties文件,初阶项目布置如下参数就足足了,更详细陈设可继

续看1.4 log4j日志品级配备;

#通过根日志记录器指定日志级别及输出源 
#日志输出的优先级: debug < info < warn < error < fatal
#定义根日志记录器的日志级别(info)及输出源的别名(console,myFile)
#该定义让日志在控制台和文件输出,并且只输出info级别以上的日志
log4j.rootLogger=info,console,myFile
#######配置输出源console的具体实现为控制台输出#######
#定义输出源别名console(即根日志记录器定义的输出源)
#的实现类是ConsoleAppender(控制台输出源)log4j.appender.console=org.apache.log4j.ConsoleAppender 
#指定日志输出格式的格式转换器为PatternLayout实现类
log4j.appender.console.layout=org.apache.log4j.PatternLayout
#定义日志输出的具体格式
log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n 
#######配置输出源myFile的具体实现为文件输出#######
#定义输出源别名myFile(即根日志记录器定义的输出源)
#的实现类是RollingFileAppender(文件输出源)log4j.appender.myFile=org.apache.log4j.RollingFileAppender
#定义日志文件的存储路径
log4j.appender.myFile.File=src/log/logProperties/log4j.log
#定义日志文件的大小
log4j.appender.myFile.MaxFileSize=1024kb
#定义日志文件最多生成几个(从0开始算1个,即此处最多3个文件)
#超过该大小则会覆盖前面生成的文件
log4j.appender.myFile.MaxBackupIndex=2
#指定日志输出格式的格式转换器为PatternLayout实现类
log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
#定义日志输出的具体格式
log4j.appender.console.layout.ConversionPattern=%d %-5p [%c.%M()] - %m%n 
#######输出格式解释#######
#%d: 日志打印的时间点,默认格式为ISO8601,也可以另外指定格式,
   #定义如下: %d{yyy年MM月dd日 HH时mm分ss秒SSS},则会输出:
   #2018年01月06日 14时47分45秒590
#%p: 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL
   #%-5p:表示字符小于5位,则字符居左(不加“-”号则字符居右),你可以举一反三
#%c: 日志所在类的全名
#%M: 日志所在方法的名字
#%m: 日志信息
#%n: 输出一个回车换行符
#%L: 输出代码中的行号

2.调用日志测量检验配置结果。

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class LogPropertiesTest {
 public static void main(String[] args) {
  /*解析非classpath下的配置文件
  String log4jPath=System.getProperty("user.dir")+"\src\log\logProperties\log4j.properties";
  PropertyConfigurator.configure(log4jPath);*/
  Logger log = LogManager.getLogger(LogPropertiesTest.class);
  log.debug("调试");
  log.info("信息");
  log.warn("警告");
  log.error("错误");
  log.fatal("致命错误");
 }
}

1.4日志品级配备

  日志品级配备可分为3类,一类如上配备是安排父类日志记录器的日志等级,第二类是布局子类日志记录器的日记品级,第三类是安插输出源(调控台、文件等)的日记等第。他们的日记等级深入分析优先级由低到高排列。具体表述原谅笔者说不清楚,直接
上案例,大家应该力所能及懂!

1.假使陈设(也非得要配置)了父类日志记录器(rootLogger)的日志等级(要是是INFO品级),没有陈设子类日志记录器的日记等级,也从不安排输出源的日志等第,则输出源只好输出INFO品级以上的;

2.假设布署(也务要求布局)了父类日志记录器(rootLogger)的日记品级(假如是INFO等级),配置了子类日志记录器的日志等第(假若是DEBUG等第),未有配置输出源的日志等级,则输出源输出DEBUG级别以上的;

3.假使安排(也务供给布局)了父类日志记录器(rootLogger)的日记等第(借使是INFO品级),配置了子类日志记录器的日志等级(要是是DEBUG等级),配置了输出源的日记等第(要是是INFO等级),则输出源输出INFO品级以上的;

4.比如安插(也亟要求布置)了父类日志记录器(rootLogger)的日记品级(借使是INFO品级),未有配备子类日志记录器的日记等第,配置

了输出源的日志品级(如果是DEBUG等级),则输出源输出INFO等第以上的;

故此,从上述的案例中大家得以领会日记记录器和输出源输出日志品级存在2个逻辑关系:

1.输出源若无定义日志等级,它会继续最周围它的子类日志记录器的日记等级;子类日志记录器未有定义日志等第,它会三番五次最周围它的父类日志记录器。

2.打字与印刷日志时输出源会遵照本身定义的日志品级与最周围它的子类日志记录器定义的日记等级对比,即便输出源定义的等第高于子类日志记录器,则按输出源定义的日记品级输出日志,反之则按子类日志记录器的日志品级输出。

故此在类型中可以按日下安顿模式安排日志等第:

#控制父类日志记录器的日志级别为info,默认所有模块下只输出info级别以上的日志
log4j.rootLogger=info,console
#单独控制某个模块下的日志级别为error,只有发生异常的时候才输出日志
log4j.logger.log.logProperties=error
#单独控制某个类的日志级别debug,方便输出调试信息
log4j.logger.log.logProperties.LogPropertiesTest=debug
############# 日志输出到控制台 ############# 
#日志输出到控制台使用的api类 
log4j.appender.console=org.apache.log4j.ConsoleAppender 
#指定当前输出源的日志级别,有了前面的配置,就不需要配置该项了
#log4j.appender.console.Threshold = info
#指定日志输出的格式:灵活的格式
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
#具体格式的内容
log4j.appender.console.layout.ConversionPattern=%d %-2p [%c.%M()] - %m%n 

1.5结束语

  到此,相信您日志配置有了基本的明白了。文中有广大地点或然会有不准绳的地方,招待各位好汉提出。笔者也是为了能够深入驾驭该才干的布局,才创作总计,这样自身就能对它有越来越深档次的知道了。

log4j日志品级配备详解,javalog4j 1.1 前言 讲出去真是丢脸,近日被公司派到顾客公司面试外包开采岗位,本来筹算了什么redis、rabbit...

本文由8535.com-新浦京娱乐场官网|欢迎您发布于计算机网络,转载请注明出处:Java中 log4j日志级别配置详解,javalog4j

关键词:

上一篇:没有了

下一篇:红旗Linux桌面版6.0硬盘安装手记

最火资讯