动态配置log4j2.xml日志输出文件的位置

摘要:
--4status:用于设置log4j2的内部信息输出。无法设置。当设置为trace时,您将在log4j2中看到各种详细的输出5monitorInterval:Log4j可以自动检测配置文件的修改并重新配置自己,并设置间隔秒--配置日志文件输出目录--˃1112http13141516171819202143<PatternLayout˃44<pattern>%d{yyyy MM ddHH:MM:ss.ss}%-5level%class{36}%L%M--%msg%xEx%n46<Policies>47<TimeBasedTriggeringPolicyinnte rval=“1”modify=“true”/˃484950515253˂!
目标:根据启动jar时传进main()的参数动态修改日志位置 一、修改启动项 
MainMapLookup.setMainArguments(args);
注:不要在lookup设置之前初始化log(如:
private static final Logger log = LoggerFactory.getLogger(HttpServer.class);)
 1   public static void main(String[] args) throws InterruptedException, ServletException {
 2         // 设置log文件夹
 3         MainMapLookup.setMainArguments(args);
 4 
 5         // 读配置文件并启动
 6         try {
 7             String confPathName = args[0];
 8             // 读取jar外的配置文件
 9             InputStream in = new BufferedInputStream(new FileInputStream(confPathName+ "/conf.properties"));
10             config.load(in);
11         } catch (Exception e) {
12             e.printStackTrace();
13         }
14         new HttpServer().start();
15     }
二、设置log4j2.xml

  ${main:0}

  动态配置log4j2.xml日志输出文件的位置第1张

lo4j2.xml 代码如下

动态配置log4j2.xml日志输出文件的位置第2张动态配置log4j2.xml日志输出文件的位置第3张
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <!--
 4     status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
 5     monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。
 6 -->
 7 <Configuration status="DEBUG" monitorInterval="6000">
 8 
 9     <Properties>
10         <!-- 配置日志文件输出目录 -->
11         <Property name="LOG_HOME" value="log/log_${main:0}" />
12         <Property name="LOG_NAME">http</Property>
13     </Properties>
14 
15     <Appenders>
16 
17         <!--这个输出控制台的配置-->
18         <Console name="Console" target="SYSTEM_OUT">
19             <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
20             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
21             <!-- 输出日志的格式 -->
22             <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
23         </Console>
24 
25         <!-- DEBUG日志格式 -->
26         <RollingFile name="service_debug_appender" fileName="${LOG_HOME}/${LOG_NAME}.log"
27                      filePattern="${LOG_HOME}/${LOG_NAME}.log.%d{yyyy-MM-dd}-%i" append="true" immediateFlush="true">
28             <Filters>
29                 <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
30             </Filters>
31             <!--
32                 %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间
33                 %p : 日志输出格式
34                 %c : logger的名称
35                 %m : 日志内容,即 logger.info("message")
36                 %n : 换行符
37                 %C : Java类名
38                 %L : 日志输出所在行数
39                 %M : 日志输出所在方法名
40                 hostName : 本地机器名
41                 hostAddress : 本地ip地址
42              -->
43             <PatternLayout>
44                 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M -- %msg%xEx%n</pattern>
45             </PatternLayout>
46             <Policies>
47                 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
48                 <SizeBasedTriggeringPolicy size="500 MB"/>
49             </Policies>
50         </RollingFile>
51 
52 
53         <!-- ERROR日志格式 -->
54         <RollingFile name="service_error_appender" fileName="${LOG_HOME}/${LOG_NAME}.error"
55                      filePattern="${LOG_HOME}/${LOG_NAME}.error.%d{yyyy-MM-dd}-%i" append="true" immediateFlush="true">
56             <Filters>
57                 <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
58             </Filters>
59             <PatternLayout>
60                 <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36} %L %M -- %msg%xEx%n</pattern>
61             </PatternLayout>
62             <Policies>
63                 <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
64                 <SizeBasedTriggeringPolicy size="500 MB"/>
65             </Policies>
66         </RollingFile>
67     </Appenders>
68 
69     <Loggers>
70         <!-- 配置日志的根节点 -->
71         <Root level="debug">
72             <appender-ref ref="Console"/>
73             <appender-ref ref="service_debug_appender"/>
74             <appender-ref ref="service_error_appender"/>
75         </Root>
76 
77         <!-- 第三方日志系统 -->
78         <logger name="org.springframework" level="INFO"/>
79         <logger name="io.netty" level="warn"/>
80         <logger name="org.apache.http" level="warn"/>
81         <logger name="org.mongodb.driver" level="INFO"/>
82         <logger name="org.jboss.netty" level="warn"/>
83         <logger name="org.springframework.data.redis" level="INFO"/>
84 
85     </Loggers>
86 
87 </Configuration>
View Code
三、结果

  log 文件夹下产生log_${main:0} 文件夹,下面放着系统的日志

免责声明:文章转载自《动态配置log4j2.xml日志输出文件的位置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇matlab 霍夫变换(hough) 检测直线Docker开启安全的TLS远程连接下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Gitlab--安装及汉化

简介 gitlab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git 项目仓库,可通过Web界面迚行访问公开的戒者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架。GitLab 拥有与Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常...

使用filebeat 收集日志到logstash 收集日志redis再到logstash到es

大型场合的工作流程图 filebeat -->logstash ---> redis ---> logstash --->es 工作环境: 需要两台logstash, 安装jdk8 [root@es-web1]# apt install openjdk-8-jdk -y 这里已经安装filebeat 配置filebeat(这里的...

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表) 前言 版本:11.2.0.4.0。 Oracle 11G中没特殊要求还是要建议关闭审计功能:alter system set audit_trail = none scope=spfile  sid='*'; 由于默认审计数据的AUD$和FGA_LOG$表在system表空间,...

C# 使用 log4net 记录日志

Ø  前言 在一般的开发应用中,都会涉及到日志记录,用于排查错误 或 记录程序运行时的日志信息。log4net 库是 Apache log4j框架在 Microsoft .NET 平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的组件。 下面介绍下如何在 C# 中如何使用 log4net 记录日志,主要分为以下几点: 1.  ...

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。

二月 25, 2016 9:24:24 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclip...

(转)MySQL 8 新特性之Clone Plugin

原文:https://www.cnblogs.com/ivictor/p/13818440.html#top Clone Plugin是MySQL 8.0.17引入的一个重大特性,为什么要实现这个特性呢?个人感觉,主要还是为Group Replication服务。在Group Replication中,添加一个新的节点,差异数据的补齐是通过分布式恢复(Di...