log4j 动态改变日志的输出路径

实际背景

  客户有客户端多台,每个客户端有自己的唯一编号。输出的日志要根据每个客户端的编号生成,例如10001_demo.log,10002_demo.log

方法

  1.网上给出的第一种方法是:

    在log4j的配置文件中log4j.appender.file.File=${log.dir}/${log.file}中,使用${}形式定义变量,在后台使用

    System.setProperty("log.dir","/home/..."),来设置变量值。但我测试了多次,这样是不起作用的,可能是我自己配置的问题。

    2.第二种方法,亲测可用:  

1    Logger log = Logger.getLogger(ZhzhcxCtl.class);//获取log对象
2   FileAppender fileAppender = (FileAppender) Logger.getRootLogger().getAppender("file");//获取FileAppender对象
3   fileAppender.setFile("/home/log/gcds.log");//重新设置输出日志的路径和文件名
4   fileAppender.activateOptions();//使设置的FileAppender起作用
5   log.info("index.........");

原文地址:https://www.cnblogs.com/xiaohu-v587/p/8463814.html

时间: 2024-08-02 10:06:10

log4j 动态改变日志的输出路径的相关文章

Log4j中配置日志文件相对路径

log4j.appender.file.File=${catalina.home}/logs/yctxkj_blog.log ${catalina.home} 是tomcat的catalinjia脚本的启动路径,这样配置后日志会写入到tomcat的logs目录下. windows测试通过,linux下理论上也在tomcat的logs目录下.

java mybatis学习之$和#区别,mapper代理接口,动态SQL,在日志中输出mybatis的sql语句

1.在mybatis中,$和#的区别: #{}:表示一个预处理参数,参数类型不定,是根据传入的参数类型来设定的.类似于JDBC中的? 特例使用,模糊查询:(针对oracle): and username like concat(concat('%',#{username}),'%') ${}:相当于是我们的JDBC里的字符串拼接.这里就相当于传入的就是一个字符串(不管传入什么样的数据类型,都是字符串) and username like '%${value}%' 2.$和#在mybatis中的优

log4j范例,动态切换日志位置

详解参考:http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html Logger.getRootLogger().getAppender(""); MyFileAppender.setFile(); 动态改变日志位置: package com.von.log; import java.io.File; import org.apache.log4j.RollingFileAppender; public class M

log4j+slf4j管理日志项目迁移logback+slf4j

作为一个刚踏入java语言的小学生,最近被安排了一个任务,原有的项目中使用的是log4j日志管理 要转换成logbacak的日志管理.介于之前并未深究log4j和logback日志,所以做起来也很是头疼,不得不查询资料问别人,才勉强完成,所以记录一下从头的步骤,以供别人参考,有不对地方还请大神斧正. 首先提供一下log4j和slf4j以及logback的关系图 第一步:我们项目是log4j+转slf4j管理的,要替换成logback,所以需要删除掉log4j和slf4j-log4j12的所有ja

mybatis结合log4j打印SQL日志

1.Maven引用jar包 默认的mybatis不能打印出SQL日志,不便于查看调试,须要结合log4jdbc-log4j2就能够完整的输入SQL的调试信息. pom.xml 配置maven.注意以下3个都须要 <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId> <version&g

log4j.properties打印日志信息(1)

log4j.properties log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender #log4j.appender.stdout.Target=System.err log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout ### 把日志信息输出到文件:jbit.

web项目Log4j日志输出路径配置问题

问题描述:一个web项目想在一个tomcat下运行多个实例(通过修改war包名称的实现),然后每个实例都将日志输出到tomcat的logs目录下实例名命名的文件夹下进行区分查看每个实例日志,要求通过尽可能少的改动配置文件,最好修改实例名后可以不修改log4j的配置文件. 实现分析:一般实现上面需求,需要在修改完war包名称之外要再做下面配置: 1.修改每个实例名下web.xml中参数webAppRootKey为不同值.同一个tomcat下运行多个web应用时,该值相同的话,运行时会抛异常. <c

winform展示Unity3D文件(支持动态改变文件路径)

winform下展示Unity3D文件可以支持对Unity3D实现的模块进行包装,以及在其他的项目中需要展示Unity3D的界面时候,恰到适宜地进行打开展示,这里我展示如何使用winform打开Unity3D文件. 一.在Unity的官网下载并安装Unity 安装完成后的目录如下: 二.在Unity/WebPlayer64/loader-x64文件夹下找到UnityWebPluginAX.ocx文件,然后将其拖动到WindowForm工具箱中. 然后将其拖动到窗体中,并添加一个button作为动

将java log4j的日志配置输出到mysql中

log4j可以支持将log输出到文件,数据库,甚至远程服务器,这次给大家分享下如何输出到mysql中. (1)log4j.properties的配置内容如下: log4j.rootLogger=ERROR,appender1,appender2 log4j.appender.appender1=org.apache.log4j.ConsoleAppender log4j.appender.appender1.layout=org.apache.log4j.PatternLayout log4j.