广告
返回顶部
首页 > 资讯 > 精选 >log4j怎么根据变量动态生成文件名
  • 720
分享到

log4j怎么根据变量动态生成文件名

2023-06-22 05:06:07 720人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关log4j怎么根据变量动态生成文件名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据变量动态生成文件名简单的log4j设置一般情况下,log4j配置文件简单的设置为:log4

这篇文章将为大家详细讲解有关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定义

<appender name="daily" class="org.apache.log4j.DailyRollingFileAppender">        <param name="file" value="/opt/tuhan.crm/batch/log/${tuhan.crm.log.name}.log" />        <param name="threshold" value="debug"/>        <param name="DatePattern" value="yyyyMMdd"/>        <param name="append" value="true" />        <layout class="org.apache.log4j.PatternLayout">            <param name="ConversionPattern"                value="%d{yyyy-MMM-dd HH:mm:ss,SSS}\t[%-5p]\t(%c:%L)\t%m%n"/>        </layout>    </appender>

log4j可以接受自定义环境变量,注意下面行【${tuhan.crm.log.name}】就是自定义环境变量

<param name="file" value="/opt/tuhan.crm/batch/log/${tuhan.crm.log.name}.log" />

那么环境变量如何设置呢,有2种方法

Java中设定(在使用配置文件之前, 要在程序中声明这些变量):

System.setProperty("tuhan.crm.log.name", "batch001");

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怎么根据变量动态生成文件名”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: log4j怎么根据变量动态生成文件名

本文链接: https://www.lsjlt.com/news/302890.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • log4j怎么根据变量动态生成文件名
    这篇文章将为大家详细讲解有关log4j怎么根据变量动态生成文件名,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据变量动态生成文件名简单的log4j设置一般情况下,log4j配置文件简单的设置为:log4...
    99+
    2023-06-22
  • log4j如何根据变量动态生成文件名
    目录根据变量动态生成文件名简单的log4j设置简单实例log4j动态文件名一、按照用户ID来生成log二、在batch程序中,通过一个设定来实现每个batch三、在batch程序中,...
    99+
    2022-11-12
  • JAVA怎么根据流生成PDF文件
    Java中可以使用iText库来根据流生成PDF文件。iText是一个开源的Java库,用于处理PDF文件。首先,需要下载iText...
    99+
    2023-08-15
    JAVA
  • php怎么根据get值生成缓存文件
    要根据GET值生成缓存文件,可以按照以下步骤进行操作:1. 首先,获取GET值。在PHP中,可以使用 $_GET 超全局变量来获取G...
    99+
    2023-10-18
    php
  • JAVA怎么根据时间戳生成文件夹
    在Java中,可以使用`java.io.File`类来创建文件夹。根据时间戳生成文件夹的步骤如下: 获取当前时间戳,可以使用`Sy...
    99+
    2023-10-24
    JAVA
  • 怎么在Python中根据模板批量生成docx文档
    今天就跟大家聊聊有关怎么在Python中根据模板批量生成docx文档,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、需求说明能够根据模板批量生成docx文档。具体而言,读取exce...
    99+
    2023-06-15
  • 怎么让java只根据数据库表名自动生成实体类
    这篇文章将为大家详细讲解有关怎么让java只根据数据库表名自动生成实体类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。根据数据库表名生成实体类公司用的jpa,没有用mybatis。所以也没有用mybati...
    99+
    2023-06-15
  • C++静态库与动态库文件怎么生成和使用
    这篇文章主要介绍“C++静态库与动态库文件怎么生成和使用”,在日常操作中,相信很多人在C++静态库与动态库文件怎么生成和使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++静态库与动态库文件怎么生成和使用...
    99+
    2023-07-05
  • vue+el-element中根据文件名动态创建dialog的方法是什么
    这篇文章给大家介绍vue+el-element中根据文件名动态创建dialog的方法是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。背景在项目中使用对话框的通常做法是把对话框封装成组件,在使用的地方引入,然后添加到...
    99+
    2023-06-22
  • Python怎么实现批量生成、重命名和删除word文件
    这篇文章主要讲解了“Python怎么实现批量生成、重命名和删除word文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现批量生成、重命名和删除word文件”吧!批量生成w...
    99+
    2023-07-05
  • 怎么根据当前目录下的文件生成网址列表的bat
    本篇内容介绍了“怎么根据当前目录下的文件生成网址列表的bat”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能要求:  例如当面目...
    99+
    2023-06-08
  • 怎么动态根据一个业务实体类型创建XSD架构文件
    这篇文章主要为大家展示了“怎么动态根据一个业务实体类型创建XSD架构文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么动态根据一个业务实体类型创建XSD架构文件”这篇文章吧。目前该功能仅仅是...
    99+
    2023-06-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作