【问题标题】:How to set a folder for logs during runtime using log4j in java?java - 如何在运行时使用java中的log4j设置日志文件夹?
【发布时间】:2019-02-08 06:19:17
【问题描述】:

我正在编写一个关于 Java 的简单套接字聊天。对于日志记录,我使用 log4j。后端包括Server.class(处理一般逻辑)和ClientListener.class(接受并操作用户请求),它们都是线程。

问题是:

我需要根据要记录的事件是发生在用户 XServer 还是 ClientListener 中,将日志保存到不同的目录中。

我如何看待解决方案:

  • Server 总是登录到 serv_base_dir/logs/logs.txt

  • ClientListeners 使用用户数据登录到文件夹,例如 serv_base_dir/users/X/logs/logs.txt

问题是:

服务器运行时如何设置日志文件夹?

附言

我已经阅读了Log4j config - different logs to different files 的文章,但它并没有完全解决我的问题,因为我需要在运行时设置文件夹,而不是在编译之前 我会很感激任何建议

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    如果你想设置一个名为特定用户未知的目录,直到运行时, 您可以通过在运行时将参数传递给 log4j 属性文件来解决它。

    Pass argument to log4j file

    [示例代码]

    import org.apache.log4j.PropertyConfigurator;
    import org.apache.log4j.Logger;
    
    public class MyClass
    {
        public static Logger mLogger = Logger.getLogger(MyClass.class.getName());
    
        public static void main(String[] args)
        {
            System.setProperty("test", "hello");
            PropertyConfigurator.configure("./log4j.properties");
    
            mLogger.debug("Hello world!");
    
            // modify variable and re-configure
            System.setProperty("test", "bye");
            PropertyConfigurator.configure("./log4j.properties");
    
            mLogger.debug("byebye");
        }
    }
    

    [log4j.properties]

    # Root logger option
    log4j.rootLogger=DEBUG, file
    
    # Redirect log messages to a log file, support file rolling.
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=./${test}.log
    log4j.appender.file.MaxFileSize=5MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    【讨论】:

    • 不,这可以连续改变值。我添加了示例代码。
    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2012-01-12
    • 2012-01-26
    相关资源
    最近更新 更多