Log4j.properties配置详解

合集下载

log4j日志脱敏处理+javaproperties文件加载

log4j日志脱敏处理+javaproperties文件加载

log4j⽇志脱敏处理+javaproperties⽂件加载Java 加载Properties 配置⽂件:ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter"); // 不要写扩展名 .propertiesLOG_FILTER_SWITH = bundle.getString("log4j.filter.swith");LOG_FILTER_KEYS = bundle.getString("log4j.filter.keys"); // 直接在本类中使⽤main调⽤时⽤ Properties.class.getResourceAsStream("/log4j_filter.properties"); //Properties p = new Properties(); //p.load(in); //LOG_FILTER_SWITH = p.getProperty("log4j.filter.swith"); //LOG_FILTER_KEYS = p.getProperty("log4j.filter.keys");⽇志脱敏实现:因为只修改了⼀个log4j类的调⽤,故⽇志必须是private final static Logger logger = LogManager.getLogger(SeqConfControl.class);1 , 配置⽂件 log4j_filter.properties (⼀个参数是脱敏⽇志开关,⼀个参数是要脱敏的关键字)2,⾃定义类: org.apache.logging.log4j.spi.Log4jFilter.java 是解析处理⽇志字符串中的敏感信息;log4j原⽣类: org.apache.logging.log4j.spi.AbstractLogger.java 负责调⽤⾃⼰写的类的⽅法.3,规则⽀持k:v 和 k=v 两种形式的数据处理脱敏时v的长度如果⼤于8,采⽤ XXX****XXX的形式脱敏;如果⼩于等于8采⽤ ******* 形式脱敏效果:20:25:02,0197 [INFO ][ ][connect to SFTP . ip:10.0.26.36; port:22;uppath:null;downpath:home/selfftp/selffile/20161209/;username:selfftp;password:********][ :][hulk.frame.sftp.SFtpTools]21:06:16,0907 [INFO ][ ][接收到⼀个纯⽂本消息并开始传⼊数据库:{"data":"{\"state\":\"0\",\"hostName\":\"termfrontapp\",\"policyName\":\"check_SSPM_101\",\"stateName\":null,\"program\":null,\"entryId\":null,\"agentId\":null,\"msg\":\"{\\\21:06:16,0907 [INFO ][ ][the message to decode: {"account_num":"62294785200****0034","amount":"2.00","channel_id":"01I","p_trans_code":"1017006","card_type":"","start_time":"1481634017288","end_time":"1481634017526","term_id":"01159log4j_filter.properties:# log4j 过滤器配置⽂件,主要⽤于系统中敏感字段的脱敏# true表⽰打开 false表⽰关闭log4j.filter.swith=true# 要脱敏的关键字log4j.filter.keys=password,passwd,password1,password2,account_num⾃定义解析类:org.apache.logging.log4j.spi.Log4jFilter.javapackage org.apache.logging.log4j.spi;import java.util.ResourceBundle;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** ⾃定义处理⽇志中的敏感信息* @author yangw1006@**/public class Log4jFilter {/*** ⽇志脱敏开关*/private static String LOG_FILTER_SWITH = "false";/*** ⽇志脱敏关键字*/private static String LOG_FILTER_KEYS = null;static{// 加载配置⽂件try {// 直接在本类中使⽤main调⽤时⽤ Properties.class.getResourceAsStream("/log4j_filter.properties");//InputStream in =Properties.class.getClassLoader().getResourceAsStream("log4j_filter.properties");//Properties p = new Properties();//p.load(in);//LOG_FILTER_SWITH = p.getProperty("log4j.filter.swith");//LOG_FILTER_KEYS = p.getProperty("log4j.filter.keys");ResourceBundle bundle = ResourceBundle.getBundle("log4j_filter");LOG_FILTER_SWITH = bundle.getString("log4j.filter.swith");LOG_FILTER_KEYS = bundle.getString("log4j.filter.keys");} catch (Exception e) {e.printStackTrace();}}/*** 处理⽇志字符串,返回脱敏后的字符串* @param msg* @return*/public static String invokeMsg(final String message){String msg = new String(message);if("true".equals(LOG_FILTER_SWITH)){//处理字符串if(LOG_FILTER_KEYS!=null && LOG_FILTER_KEYS.length()>0){String[] keyArr = LOG_FILTER_KEYS.split(",");for(String key: keyArr){// 找keyint index= -1;do{index = msg.indexOf(key, index+1);if(index!=-1){// 判断key是否为单词字符if(isWordChar(msg,key,index)){continue;}// 确定是单词⽆疑....................................// 寻找值的开始位置.................................int valueStart = getValueStartIndex(msg,index + key.length());//查找值的结束位置(逗号,分号)........................int valueEnd = getValuEndEIndex(msg,valueStart);// 对获取的值进⾏脱敏String subStr = msg.substring(valueStart, valueEnd);subStr = tuomin(subStr);///////////////////////////msg = msg.substring(0,valueStart) + subStr + msg.substring(valueEnd); }}while(index!=-1);}}}return msg;}private static Pattern pattern = pile("[0-9a-zA-Z]");/*** 判断从字符串msg获取的key值是否为单词, index为key在msg中的索引值* @return*/private static boolean isWordChar(String msg,String key, int index){// 必须确定key是⼀个单词............................if(index!=0){ //判断key前⾯⼀个字符char preCh = msg.charAt(index-1);Matcher match = pattern.matcher(preCh+"");if(match.matches()){return true;}}//判断key后⾯⼀个字符char nextCh = msg.charAt(index+key.length());Matcher match = pattern.matcher(nextCh+"");if(match.matches()){return true;}return false;}/*** 获取value值的开始位置* @param msg 要查找的字符串* @param valueStart 查找的开始位置* @return*/private static int getValueStartIndex(String msg, int valueStart ){// 寻找值的开始位置.................................do{char ch = msg.charAt(valueStart);if(ch == ':' || ch == '='){ // key 与 value的分隔符valueStart ++;ch = msg.charAt(valueStart);if(ch == '"'){valueStart ++;}break; //找到值的开始位置}else{valueStart ++;}}while(true);return valueStart;}/*** 获取value值的结束位置* @return*/private static int getValuEndEIndex(String msg,int valueEnd){do{if(valueEnd == msg.length()){break;}char ch = msg.charAt(valueEnd);if(ch == '"'){ // 引号时,判断下⼀个值是结束,分号还是逗号决定是否为值的结束if(valueEnd+1 == msg.length()){break;}char nextCh = msg.charAt(valueEnd+1);if(nextCh ==';' || nextCh == ','){// 去掉前⾯的 \ 处理这种形式的数据 "account_num\\\":\\\"6230958600001008\\\"while(valueEnd>0 ){char preCh = msg.charAt(valueEnd-1);if(preCh != '\\'){break;}valueEnd--;}break;}else{valueEnd ++;}}else if (ch ==';' || ch == ','){break;}else{valueEnd ++;}}while(true);return valueEnd;}private static String tuomin(String submsg){StringBuffer sbResult = new StringBuffer();if(submsg!=null && submsg.length()>0){int len = submsg.length();if(len > 8){ //8位以上的隐掉中间4位for(int i = len-1;i>=0;i--){if(len-i<5 || len-i>8){sbResult.insert(0, submsg.charAt(i));}else{sbResult.insert(0, '*');}}}else{ //8位以下的全部使⽤ *for(int i =0;i<len;i++){sbResult.append('*');}}}return sbResult.toString();}public static void main (String[] args) {//{\\\"account_num\\\":\\\"6230958600001008\\\",\\\"amount\\\":\\\"\\\"String msg = "\\\"account_num\\\":\\\"6230958600001008\\\",\\\"amount\\\":\\\"\\\"";System.out.println(invokeMsg(msg));}}log4j原⽣类 org.apache.logging.log4j.spi.AbstractLogger.java 修改的地⽅# 代码 725⾏左右的⽅法protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message, final Throwable t) { // by yangwString invokeMsg = Log4jFilter.invokeMsg(message);logMessage(fqcn, level, marker, messageFactory.newMessage(invokeMsg), t);}。

IDEA远程连接HBase及其JavaAPI实战详解

IDEA远程连接HBase及其JavaAPI实战详解

IDEA远程连接HBase及其JavaAPI实战详解开放端⼝安全组没开放端⼝是原罪导致好多BUG费时费⼒。

Hbase悄悄咪咪的⽤了好多端⼝,⽐如被我抓到的42239,直接搜索报错药不对症。

Hbase安装直接下载或者下载到本地再上传都⾏,看你哪个快。

wget /dist/hbase/1.3.2/hbase-1.3.2-bin.tar.gztar -zxvf hbase-1.3.2-bin.tar.gz #解压mv hbase-1.3.2-bin /urs/local/hbase配置hbase-site.xmlcd /usr/local/hbase/confvi hbase-site.xml<property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.rootdir</name><value>/hbase-data</value></property><property><name>hbase.zookeeper.quorum</name><value>master:2181</value></property>配置hbase-env.shcd /usr/local/hbase/confecho $JAVA_HOME #若没有安装jdk可百度(偷懒)vi hbase-env.sh #添加要⼀致export JAVA_HOME=/usr/local/java运⾏测试cd /usr/local/hbase/bin./start-hbase.ship:16010访问域名配置服务器 vi /etc/hosts私⽹ip master公⽹ip master⽬录结构:创建⼀个maven项⽬并在pom.xml添加依赖:<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.3.2</version></dependency>版本是1.3.2,注意和你⾃⼰的⼀致,可以登录hbase shell时查看。

ssh详解

ssh详解

SSH框架整合步骤详解SSH框架 2009-04-09 10:47:00 阅读611 评论0 字号:大中小订阅更系统地学习Struts1.x/Struts2.x+Hibernate+Spring,请学习该开源项目Appfuse终于,终于将SSH整合成功了,弄了几个小时,可以休息了(有的朋友弄了半个月,甚至重装了系统也没弄好,哎,庆幸啊)。

碰到问题千万不要放弃,要相信没有解决不了的问题!项目结构图:jsp部分为:index.jsp;success.jsp;fail.jspUserDAO.java,User.hbm.xml自动生成,HibernateSessionFactory 是多余的。

相关的配置文件、类文件详细信息,请参看Struts+Spring+Hibernate/SSH整合开发详细二以前是整过这三个框架的,可是工作期间都不曾用过,不知不觉之中,学的东西全忘了。

这次又要开始找工作了,看着招聘启事上都写着:要求熟练掌握Struts,Hibernate或Spring框架……,没得办法,重新学呗。

Spring in Action中文版下载地址(ftp协议)ftp://222.214.218.61/book5/20080228/cf8b35cc-5bcd-497 3-b6b7-37ae3ec78391.rar如果无法下载,可以在里重新搜索首先开始搭建项目环境,步骤如下:使用平台:MyEclipse 6.0框架版本:Struts 1.2 Hibernate 3.0 Spring 2.01>添加过程:<1> 新建项目。

Package Explorer视图下,右键单击 New -> Web Project;<2> 添加Struts框架。

菜单栏MyEclipse -> Capabilities,或者右键单击新建的项目名,选择快捷菜单中的"MyEclipse"下的二级菜单;设置相关的包名后,请写一个Struts的小例子,用来测试Struts是否可用;<3> 添加Spring。

jeecg源码解析1.0

jeecg源码解析1.0
0
本文档主要是对 jeecg 3.0 源码解析过程中涉及到的技术知识进行汇总,对于少部分实 现细节进行了说明。 由于时间仓促,对一些细节的介绍还不是很清晰,后续会进一步整理一下。 有问题欢迎联系作者:xianming01@
目录
1 配置........................................................................................................................................... 4 1.1 Web.xml ........................................................................................................................ 4 1.1.1 webAppRootKey ................................................................................................ 4 1.1.2 Log4jConfigListener ........................................................................................... 6 1.1.3 openSessionInViewFilter ................................................................................... 6 1.1.4 druidWebStatFilter ........................

log4j2使用properties文件进行配置

log4j2使用properties文件进行配置

log4j2使⽤properties⽂件进⾏配置⽹上不少⽂章给的都是⽤xml进⾏配置,也会提到⽆法使⽤properties⽂件对log4j进⾏配置,但那应该只是在他们写⽂章的时候才是如此,最新的2.8.2版本经过我试验后是可以做到的当然该⽂件最好放在特定的⽬录中才⾏,官⽅⽂档也提到了1.Log4j will inspect the "log4j.configurationFile" system property and, if set, will attempt to load the configuration using the ConfigurationFactory that matches the file extension.2.If no system property is set the YAML ConfigurationFactory will look for log4j2-test.yaml or log4j2-test.yml in the classpath.3.If no such file is found the JSON ConfigurationFactory will look for log4j2-test.json or log4j2-test.jsn in the classpath.4.If no such file is found the XML ConfigurationFactory will look for log4j2-test.xml in the classpath.5.If a test file cannot be located the YAML ConfigurationFactory will look for log4j2.yaml or log4j2.yml on the classpath.6.If a YAML file cannot be located the JSON ConfigurationFactory will look for log4j2.json or log4j2.jsn on the classpath.7.If a JSON file cannot be located the XML ConfigurationFactory will try to locate log4j2.xml on the classpath.8.If no configuration file could be located the DefaultConfiguration will be used. This will cause logging output to go to the console.name = PropertiesConfigproperty.filename = target/logs#appenders = console, file#配置值是appender的类型,并不是具体appender实例的nameappenders = rollingappender.rolling.type = RollingFile = RollingLogFileappender.rolling.fileName=${filename}/automationlogs.logappender.rolling.filePattern = ${filename}/automationlogs-%d{MM-dd-yy-HH-mm-ss}-%i.logyout.type = PatternLayoutyout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%nappender.rolling.policies.type = Policiesappender.rolling.policies.size.type = SizeBasedTriggeringPolicyappender.rolling.policies.size.size=100MBappender.rolling.strategy.type = DefaultRolloverStrategyappender.rolling.strategy.max = 5rootLogger.level = tracerootLogger.appenderRef.rolling.ref = rollingrootLogger.appenderRef.rolling.ref = RollingLogFile。

springlog4j2.xml配置文件详解

springlog4j2.xml配置文件详解

springlog4j2.xml配置⽂件详解⼀、log4j2介绍 log4j 2.x版本不再⽀持像1.x中的.properties后缀的⽂件配置⽅式,2.x版本配置⽂件后缀名只能为".xml",".json"或者".jsn"。

配置⽂件的格式:log2j配置⽂件可以是xml格式的,也可以是json格式的。

配置⽂件的位置:log4j2默认会在classpath⽬录下寻找log4j2.xml、log4j.json、log4j.jsn等名称的⽂件。

系统选择配置⽂件的优先级(从先到后)如下: (1).classpath下的名为log4j2-test.json 或者log4j2-test.jsn的⽂件. (2).classpath下的名为log4j2-test.xml的⽂件. (3).classpath下名为log4j2.json 或者log4j2.jsn的⽂件. (4).classpath下名为log4j2.xml的⽂件. 我们⼀般默认使⽤log4j2.xml进⾏命名。

⼆、配置⽂件节点解析 (1).根节点Configuration有两个属性:status和monitorinterval,有两个⼦节点:Appenders和Loggers(表明可以定义多个Appender和Logger)。

status⽤来指定log4j本⾝的打印⽇志的级别。

monitorinterval⽤于指定log4j⾃动重新配置的监测间隔时间,单位是s,最⼩是5s。

(2).Appenders节点,常见的有三种⼦节点:Console、RollingFile、File。

Console节点⽤来定义输出到控制台的Appender。

name:指定Appender的名字. target:SYSTEM_OUT 或 SYSTEM_ERR,⼀般只设置默认:SYSTEM_OUT。

PatternLayout:输出格式,不设置默认为:%m%n。

log4j2RollingRandomAccessFile配置过程

log4j2RollingRandomAccessFile配置过程

log4j2RollingRandomAccessFile配置过程log4j2 RollingRandomAccessFile配置⼀、需求背景1. ⽇志按⼩时压缩成zip⽂件。

2. 仅保存距离当前时间最近24⼩时的历史压缩⽂件。

3. 压缩封存的zip⽂件,按照零点为参考点纠偏。

4. 将com.roadway.acceptor.base.DebugUtils类的⽇志输出到指定⽂件,且不再输出到其他⽂件。

⼆、log4j2 配置实现<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO" monitorInterval="120"><properties><property name="MSG_LOG_HOME">/data/gpslog</property></properties><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d [%t] %-5p [%c] - %m%n" /></Console><RollingRandomAccessFile name="msgAppender" immediateFlush="true"fileName="${MSG_LOG_HOME}/msg.log"filePattern="${MSG_LOG_HOME}/backup/msg.%d{yyyyMMddHH}.zip"><Filters><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/></Filters><PatternLayout pattern="%m%n" /><Policies><TimeBasedTriggeringPolicy interval="1" modulate="true"/></Policies><DefaultRolloverStrategy max="24"><Delete basePath="${MSG_LOG_HOME}" maxDepth="2"><IfFileName glob="*/msg.*.zip" /><IfLastModified age="24H" /></Delete></DefaultRolloverStrategy></RollingRandomAccessFile></Appenders><Loggers><AsyncLogger name="com.roadway.DebugUtils" additivity="FALSE" level="INFO"><appender-ref ref="msgAppender" /></AsyncLogger></Loggers></Configuration>三、配置说明1. monitorInterval,博客配置的为120,单位为秒。

idea log4j插件用法

idea log4j插件用法

1. 什么是Log4j插件Log4j是一个开源的日志记录框架,广泛应用于Java项目中。

Log4j插件是用于在开发过程中方便地使用Log4j框架的工具,能够帮助开发人员快速配置和管理日志记录功能。

2. Log4j插件的安装在使用Log4j插件之前,首先需要在开发环境中安装Log4j插件。

可以通过Maven或手动下载Jar包的方式将Log4j插件导入到项目中,然后在项目配置文件中声明Log4j插件的依赖关系。

3. Log4j插件的配置在项目中成功导入Log4j插件后,需要对插件进行配置。

首先需要创建一个Log4j配置文件(通常命名为log4j.properties或log4j.xml),在配置文件中指定日志记录的格式、输出目标、日志级别等参数。

4. 使用Log4j插件记录日志配置完成后,开发人员可以通过调用Log4j插件提供的API来记录日志。

开发人员可以在代码中插入日志记录语句,指定日志的级别(如DEBUG、INFO、WARN、ERROR等),以及日志的内容。

通过Log4j插件记录的日志可以输出到控制台、文件、数据库等不同的目标。

5. Log4j插件的优点Log4j插件提供了丰富的日志记录功能,可以根据需要灵活地配置日志记录的方式和输出目标。

Log4j插件具有较高的性能和稳定性,适用于各种规模的项目。

另外,Log4j插件支持多种日志级别,开发人员可以根据实际需要精细地控制日志的记录和输出。

6. Log4j插件的注意事项在使用Log4j插件的过程中,需要注意配置文件的正确指定和日志记录语句的合理使用。

对于不同的项目和需求,需要仔细选择适合的日志记录方式和输出目标,以便保证日志记录的准确性和便捷性。

7. 结语Log4j插件是一个优秀的日志记录工具,能够帮助开发人员轻松地实现日志记录的功能。

通过仔细的配置和合理的使用,开发人员可以充分发挥Log4j插件的优势,为项目提供有效的日志管理和追踪功能。

希望本文对大家了解Log4j插件的用法有所帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Log4j.properties配置详解一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。

这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。

综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。

1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。

这五个级别是有顺序的,DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG则不会输出。

2、Appenders禁用和使用日志请求只是Log4j的基本功能,Log4j日志系统还提供许多强大的功能,比如允许把日志输出到不同的地方,如控制台(Console)、文件(Files)等,可以根据天数或者文件大小产生新的文件,可以以流的形式发送到其它地方等等。

常使用的类如下:org.apache.log4j.ConsoleAppender(控制台)org.apache.log4j.FileAppender(文件)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)配置模式:log4j.appender.appenderName = classNamelog4j.appender.appenderName.Option1 = value1…log4j.appender.appenderName.OptionN = valueN3、Layouts有时用户希望根据自己的喜好格式化自己的日志输出,Log4j可以在Appenders的后面附加Layouts来完成这个功能。

Layouts提供四种日志输出样式,如根据HTML样式、自由指定样式、包含日志级别与信息的样式和包含日志时间、线程、类别等信息的样式。

常使用的类如下:org.apache.log4j.HTMLLayout(以HTML表格形式布局)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)配置模式:yout =classNameyout.Option1 = value1yout.OptionN = valueN二、配置详解在实际应用中,要使Log4j在系统中运行须事先设定配置文件。

配置文件事实上也就是对Logger、Appender及Layout进行相应设定。

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是properties属性文件。

下面以properties属性文件为例介绍log4j.properties的配置。

1、配置根Logger:log4j.rootLogger = [ level ] , appenderName1, appenderName2, ….apache=false:表示Logger不会在父Logger的appender里输出,默认为true。

level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用中间四个级别。

通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。

appenderName:就是指定日志信息要输出到哪里。

可以同时指定多个输出目的地,用逗号隔开。

例如:log4j.rootLogger=INFO,A1,B2,C32、配置日志信息输出目的地(appender):log4j.appender.appenderName = classNameappenderName:自定义appderName,在log4j.rootLogger设置中使用;className:可设值如下:(1)org.apache.log4j.ConsoleAppender(控制台)(2)org.apache.log4j.FileAppender(文件)(3)org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)(4)org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)(5)org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)(1)ConsoleAppender选项:Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Target=System.err:默认值是System.out。

(2)FileAppender选项:Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

(3)DailyRollingFileAppender选项:Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。

DatePattern='.'yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。

当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。

另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:1)'.'yyyy-MM:每月2)'.'yyyy-ww:每周3)'.'yyyy-MM-dd:每天4)'.'yyyy-MM-dd-a:每天两次5)'.'yyyy-MM-dd-HH:每小时6)'.'yyyy-MM-dd-HH-mm:每分钟(4)RollingFileAppender选项:Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。

ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。

Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。

File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。

MaxFileSize=100KB:后缀可以是KB, MB 或者GB。

在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。

MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。

3、配置日志信息的输出格式(Layout):yout=classNameclassName:可设值如下:(1)org.apache.log4j.HTMLLayout(以HTML表格形式布局)(2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)(3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)(4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)(1)HTMLLayout选项:LocationInfo=true:输出java文件名称和行号,默认值是false。

Title=My Logging:默认值是Log4J Log Messages。

(2)PatternLayout选项:ConversionPattern=%m%n:设定以怎样的格式显示消息。

格式化符号说明:%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这样的多客户多线程的应用中。

相关文档
最新文档