簡體   English   中英

如何在Java中使用log4j在運行時為日志設置文件夾?

[英]How to set a folder for logs during runtime using log4j in java?

我正在用Java寫一個簡單的套接字聊天。 對於日志記錄,我使用log4j。 后端包括Server.class (處理常規邏輯)和ClientListener.class (接收並處理用戶的請求),它們都是線程。

問題是:

我需要將日志保存到其他目錄中,具體取決於是否要在用戶XServerClientListener中發生要記錄的事件。

我如何看待解決方案:

  • Server始終登錄到serv_base_dir / logs / logs.txt

  • ClientListeners使用用戶數據登錄到跟蹤器,例如serv_base_dir / users / X /logs/logs.txt

問題是:

在服務器運行期間,如何設置要在其中保存日志的日志文件夾?

聚苯乙烯

我已經閱讀過Log4j config-有關將日志記錄到不同文件的文章,但是它不能完全解決我的問題,因為我需要在運行時設置文件夾,而不是在編譯之前設置文件夾,我將非常樂意提供任何建議

如果要在運行前設置一個名為“特定用戶”的目錄,則可以通過在運行時將參數傳遞給log4j屬性文件來解決此問題。

將參數傳遞給log4j文件

[樣本代碼]

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM