java中程序动态配置log4j日志

您所在的位置:网站首页 java动态配置 java中程序动态配置log4j日志

java中程序动态配置log4j日志

2023-07-24 01:40| 来源: 网络整理| 查看: 265

上一篇讲了如何配置log4j,但是都是固定的输出方式,如果我们想要动态的改变输入方式该怎么办呢?

比如我们有一个网络游戏在测试阶段,而这个游戏中玩家是以房间的形式组合在一起,这时我们如果想要测试房间内的逻辑是否正常,输出log的话都会存放在同一个日志文件内,如果遇到bug想要找起来非常困难,所以我们需要对每一个房间生成一个独立的log文件来进行保存。

代码:

public static Logger getLoggerByName(String name,String type) { // 创建logger,如果已存在则返回现有的 Logger logger = Logger.getLogger(name); // 清空Appender。 logger.removeAllAppenders(); // log级别。 logger.setLevel(Level.DEBUG); // 生成新的Appender FileAppender appender = new RollingFileAppender(); PatternLayout layout = new PatternLayout(); // log的输出形式 // %c - the category 类 // %d - the date 日期 // Date format: The date format character may be followed by a date format specifier enclosed between braces. For example, %d{%H:%M:%S,%l} or %d{%d %m %Y %H:%M:%S,%l}. If no date format specifier is given then the following format is used: "Wed Jan 02 02:03:55 1980". The date format specifier admits the same syntax as the ANSI C function strftime, with 1 addition. The addition is the specifier %l for milliseconds, padded with zeros to make 3 digits. // %m - the message 消息 // %n - the platform specific line separator 换行 // %p - the priority 优先级 // %r - milliseconds since this layout was created. 从创建到现在的毫秒数 // %R - seconds since Jan 1, 1970 时间戳 // %u - clock ticks since process start 进程开始到现在的时间 // %x - the NDC String conversionPattern = "%m%n"; layout.setConversionPattern(conversionPattern); appender.setLayout(layout); // log输出路径 appender.setFile( "./log/" + type + "/" + name + ".log"); // log的文字码 appender.setEncoding("UTF-8"); // true:在已存在log文件后面追加 false:新log覆盖以前的log appender.setAppend(true); // 适用当前配置 appender.activateOptions(); // 将新的Appender加到Logger中 logger.addAppender(appender); return logger; }

该方法2个参数:name 为文件名,type为log下的文件夹名。

测试一下:

public static void main( String[] args ) { Logger test1 = getLoggerByName("test1", "room"); test1.info("test1 msg1"); test1.info("test1 msg2"); test1.info("test1 msg3"); Logger test2 = getLoggerByName("test2", "room"); test2.info("test2 msg1"); test2.info("test2 msg2"); test2.info("test2 msg3"); } 运行程序后,我们可以在控制台看到输出:

并且可以在log文件夹中看到日志文件:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3