ログレベル、ファイル名、ログファイルのファイルパスを設定します。私はこれを行う方法を見つけ、それはすべて動作しますが、log4jはログファイルを追加します。 私は、次のlog4j2.xmlだ:と$ {SYS:LOGFILENAME}::私は$ {LOGDIRのsys}を設定し、私の主な機能でLog4j2は不要なログファイルを作成します
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">
<Appenders>
<File name="logFile" filename="${sys:logDir}${sys:logFilename}" >
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="logFile" />
</Root>
</Loggers>
</Configuration>
を
import config.ReadParameterFile;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.config.Configuration;
import org.apache.logging.log4j.core.config.LoggerConfig;
import java.io.IOException;
public class main {
private final static Logger log = LogManager.getLogger(main.class);
public static void main(String [] args) throws IOException {
ReadParameterFile config = new ReadParameterFile();
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config1 = ctx.getConfiguration();
LoggerConfig loggerConfig = config1.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
switch (config.getProtokollProtokollTiefe()){
case "Default":loggerConfig.setLevel(Level.DEBUG);
break;
case "Produktion":loggerConfig.setLevel(Level.ERROR);
break;
case "Test":loggerConfig.setLevel(Level.FATAL);
break;
default:System.out.print("falsche Logtief");
}
System.setProperty("logDir",config.getProtokollDirProtokoll());
System.setProperty("logFilename", config.getProtokollDateinameProtokoll());
ctx.reconfigure();
ctx.updateLoggers();
}
}
それは私たいが、log4jのように働いています私のメインプロジェクトパスに "$ {sys:logDir} $ {sys:logFilename}"というファイルを作成してください。なぜlog4j2がこれをやっているのですか?私は名前を設定する前にログファイルを初期化すると思います。どうすれば変更できますか?
こんにちは!
私は、次の主要でPROBを解決することができます:
public class main {
public static void main(String [] args) throws IOException {
ReadParameterFile config = new ReadParameterFile();
System.setProperty("logDir",config.getProtokollDirProtokoll());
System.setProperty("logFilename", config.getProtokollDateinameProtokoll());
switch (config.getProtokollProtokollTiefe()){
case "Default":System.setProperty("logLvl","DEBUG");
break;
case "Produktion":System.setProperty("logLvl","ERROR");
break;
case "Test": System.setProperty("logLvl","ALL");
break;
default:System.out.print("falsche Logtief");
}
}
}
は '民間最終静的ロガーログ= LogManager.getLogger(main.class)を削除するようにしてください;'? – Aris2World
あなたは 'RollingFile'を使用しています。つまり、ファイルパターンで定義された特定の時点で新しいファイルが作成されるか、ファイルが' SizeBasedTriggeringPolicy'で定義されたサイズを超えています。 設定の詳細を参照してください:https://logging.apache.org/log4j/2.x/manual/appenders.html – Rafal
@ Aris2Worldねえ、はい、私はすでにこれを試しました。まだ間違ったファイルがあります。 – ReasyEasyPeasy