log4j怎么根据变量动态生成文件名
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关log4j怎么根据变量动态生成文件名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据变量动态生成文件名简单的log4j设置一般情况下,
千家信息网最后更新 2025年01月19日log4j怎么根据变量动态生成文件名
这篇文章将为大家详细讲解有关log4j怎么根据变量动态生成文件名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
根据变量动态生成文件名
简单的log4j设置
一般情况下,log4j配置文件简单的设置为:
log4j.rootLogger=debug,stdout,Rlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.File=test.loglog4j.appender.R.MaxFileSize=100KBlog4j.appender.R.DatePattern = '.'yyyy-MM-ddlog4j.appender.R.layout=ex.log4j.ExPatternLayoutlog4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c %5p - %m%nlog4j.appender.R.MaxBackupIndex=1
简单实例。
java代码如下:
public class LogTest {static Logger log = Logger.getLogger(LogTest.class);public static void main(String[] args) throws IOException {PropertyConfigurator.configure("log4j.properties");log.debug("helo");}}
一般如上设置即可满足简单的log4j需求。
如果需要根据程序中的变量,将日志打到不同的文件中时,(如:根据某个ID,这样对于大量日志时更加容易查找到想要的日志)
只需在java代码中过去到所配置的FileAppender,然后serFile来修改文件名。
java代码如下:
FileAppender appender = (FileAppender) log.getRootLogger().getAppender("R");appender.setFile(filePath/fileName);appender.activateOptions();
日志打印前,设置以上代码,即可。
注意:加上 appender.activateOptions(); 可以使得后面打印的日志不会将之前的日志覆盖。
log4j动态文件名
在项目中,对log的输出有多种多样的要求,下面具体分析一下动态log文件名输出的。
一、按照用户ID来生成log
这种情况,可以根据每个用户ID来动态生成logger。
代码如下:
import org.apache.log4j.FileAppender;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;import org.apache.log4j.RollingFileAppender;public class LoggerUtil { public static Logger getLoggerByName(String name) { // 生成新的Logger // 如果已經有了一個Logger實例返回現有的 Logger logger = Logger.getLogger(name); // 清空Appender。特別是不想使用現存實例時一定要初期化 logger.removeAllAppenders(); // 設定Logger級別。 logger.setLevel(Level.DEBUG); // 設定是否繼承父Logger。 // 默認為true。繼承root輸出。 // 設定false後將不輸出root。 logger.setAdditivity(true); // 生成新的Appender FileAppender appender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); // log的输出形式 String conversionPattern = "[%d] %p %t %c - %m%n"; layout.setConversionPattern(conversionPattern); appender.setLayout(layout); // log输出路径 // 这里使用了环境变量[catalina.home],只有在tomcat环境下才可以取到 String tomcatPath = java.lang.System.getProperty("catalina.home"); appender.setFile(tomcatPath + "/logs/" + name + ".log"); // log的文字码 appender.setEncoding("UTF-8"); // true:在已存在log文件后面追加 false:新log覆盖以前的log appender.setAppend(true); // 适用当前配置 appender.activateOptions(); // 将新的Appender加到Logger中 logger.addAppender(appender); return logger; }}
二、在batch程序中,通过一个设定来实现每个batch
文件名不同的设定。
log.xml定义
log4j可以接受自定义环境变量,注意下面行【${tuhan.crm.log.name}】就是自定义环境变量
那么环境变量如何设置呢,有2种方法
1.Java中设定(在使用配置文件之前, 要在程序中声明这些变量):
System.setProperty("tuhan.crm.log.name", "batch001");
2.在JVM设定
java -Xmx512M -Dtuhan.crm.log.name=batch001 com.stu.TestBatch001
三、在batch程序中,通过多个设定来实现每个batch
文件名不同的设定。
动态的配置文件路径: (log4j可以接受URL)
java.net.URL URL = consandpatt.class.getResource("/com/test/java/log/config/log4jConfig.properties");PropertyConfigurator.configure(URL);
关于"log4j怎么根据变量动态生成文件名"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
文件
变量
文件名
动态
生成
日志
代码
环境
配置
程序
输出
不同
篇文章
情况
更多
用户
路径
定来
不错
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
万方数据库可以批量下载吗
虚拟化安全性和服务器哪个好
上海大数据软件开发正规平台
软件开发外包数据
复古传奇怎么加入服务器
怎么新建数据库用户
奉贤区个性化网络技术专业服务
网络安全培训在线课程
2021网络安全发展
网络安全专业中专
网络安全青力量
mysql批量更新数据库
软件开发职业目标完整最新版
网牛互联网科技有限责任公司
服务器不能ssh
软件开发的三个开发方向
计算机网络安全 a答案
网络安全即将上市公司
合工大租房软件开发
系统的网络安全防护措施
数据库mq堆积什么意思
不是软件开发常用模型
企业网络安全防护认证
奉贤区个性化网络技术专业服务
国产数据库有多强大
云服务器挂淘宝安全不
服务器工程师做什么的
网络安全主管部门是什么
服务器参数选择
usb无线打印服务器