log4j怎么根据变量动态生成文件名
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章将为大家详细讲解有关log4j怎么根据变量动态生成文件名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据变量动态生成文件名简单的log4j设置一般情况下,
千家信息网最后更新 2025年11月14日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安全错误
数据库的锁怎样保障安全
怎样禁止修改数据库
阿里云服务器 显卡
数据库中正确的逻辑运算的顺序
单机防护服务器
数据库监控哪个牌子好
默拉克电梯服务器怎么查故障
钱包软件开发怎么样
可能会产生网络安全问题的因素
卡丁车服务器进不去
嘉兴市翔锐网络技术有限公司
一秒网络技术
bit在数据库是指什么
临沂分销软件开发
河北定制软件开发
传视频到服务器需要牌照吗
超算服务器维修站点地址
腾讯软件开发管理软件
数据库字母表图片
诺亚财富软件开发
PLM软件开发工程师
云计算软件开发岗怎么样
长宁区多媒体视频系统服务器
开封网络技术参数
湛江调度服务器品牌
网络安全培养方向
计算机网络技术结构
xmind连接数据库
软件开发企业所得税很高
软件开发对接口
数据库根据身份证号码更新性别