使用log4j时,程序创建多个文件但只填充一个,什么时候应该全部填充
When using log4j, program creates mutliple files but fills only one, when should fill all
在大学里我们正在做一个项目,作为它的一部分,我们正在尝试添加一个部分,它将使用 log4j 将所有错误和异常输出到外部文件。
我们希望一个文件用于错误,一个用于警告,一个用于所有内容,它还将包含一切正确的消息。
为了进行彻底的测试,我们添加了一些应该发生的错误。另外我们想把所有异常记录为警告,并输出到单独的文件。
在当前阶段,有一个问题:程序创建了四个文件,需要三个,还有一个是它自己添加的,其中还包括调试消息。但是,出于某种原因,有关警告和错误的信息仅进入 INFO 日志,同时也应该进入它们自己的日志文件。
登录文件:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ERRORS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.errors</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="WARNINGS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.warnings</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="INFO-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.info</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="errors" level="ERROR" additivity="true">
<appender-ref ref="ERRORS-FILE"/>
</logger>
<logger name="warnings" level="WARN" additivity="true">
<appender-ref ref="WARNINGS-FILE"/>
</logger>
<logger name="info" level="INFO" additivity="true">
<appender-ref ref="INFO-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
LoggerManager class 我创建它是为了使用它从其他 classes:
输出日志
package com.evgenie_tomer_itay.CouponSystemSpringBoot.utilities;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerManager
{
private final static Logger loggerErrors = LoggerFactory.getLogger("errors");
private final static Logger loggerWarnings = LoggerFactory.getLogger("warnings");
private final static Logger loggerInfo = LoggerFactory.getLogger("info");
private static String getCurrentDateAsString()
{
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = new Date(System.currentTimeMillis());
return formatter.format(date);
}
public static void addLogInfo(String log)
{
LoggerManager.loggerInfo.info(log);
}
public static void addLogWarnings(String log)
{
LoggerManager.loggerWarnings.info(log);
LoggerManager.loggerInfo.info(log);
}
public static void addLogErrors(String log)
{
LoggerManager.loggerErrors.info(log);
LoggerManager.loggerInfo.info(log);
}
}
依赖关系:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
这部分在 main 开始时创建文件:
public static void createLogFiles()
{
String desktopPath = System.getProperty("user.home") + File.separator + "Desktop";
String fileName = desktopPath+"\CouponSystemSpringBootLog";
System.setProperty("log.name",fileName);
}
我如何从任何 class:
创建日志的示例
LoggerManager.addLogErrors("错误");
现在,“addLogInfo”再次起作用,但“addLogError”或“addLogWarning”不起作用。
请帮助理解哪里做错了。
提前致谢!
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log)
{
myLogger.info(log);
}
您有类似这些方法来区分信息日志和错误日志,但方法名称对此没有影响。
您需要调用记录器的正确方法:
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log) {
myLogger.error(log);
}
在大学里我们正在做一个项目,作为它的一部分,我们正在尝试添加一个部分,它将使用 log4j 将所有错误和异常输出到外部文件。
我们希望一个文件用于错误,一个用于警告,一个用于所有内容,它还将包含一切正确的消息。 为了进行彻底的测试,我们添加了一些应该发生的错误。另外我们想把所有异常记录为警告,并输出到单独的文件。
在当前阶段,有一个问题:程序创建了四个文件,需要三个,还有一个是它自己添加的,其中还包括调试消息。但是,出于某种原因,有关警告和错误的信息仅进入 INFO 日志,同时也应该进入它们自己的日志文件。
登录文件:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
</encoder>
</appender>
<appender name="ERRORS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.errors</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="WARNINGS-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.warnings</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<appender name="INFO-FILE" class="ch.qos.logback.core.FileAppender">
<file>${log.name}.info</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{36} - %msg %n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures analytics data only goes to the analytics log -->
<logger name="errors" level="ERROR" additivity="true">
<appender-ref ref="ERRORS-FILE"/>
</logger>
<logger name="warnings" level="WARN" additivity="true">
<appender-ref ref="WARNINGS-FILE"/>
</logger>
<logger name="info" level="INFO" additivity="true">
<appender-ref ref="INFO-FILE"/>
</logger>
<root>
<appender-ref ref="FILE"/>
</root>
LoggerManager class 我创建它是为了使用它从其他 classes:
输出日志package com.evgenie_tomer_itay.CouponSystemSpringBoot.utilities;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LoggerManager
{
private final static Logger loggerErrors = LoggerFactory.getLogger("errors");
private final static Logger loggerWarnings = LoggerFactory.getLogger("warnings");
private final static Logger loggerInfo = LoggerFactory.getLogger("info");
private static String getCurrentDateAsString()
{
SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = new Date(System.currentTimeMillis());
return formatter.format(date);
}
public static void addLogInfo(String log)
{
LoggerManager.loggerInfo.info(log);
}
public static void addLogWarnings(String log)
{
LoggerManager.loggerWarnings.info(log);
LoggerManager.loggerInfo.info(log);
}
public static void addLogErrors(String log)
{
LoggerManager.loggerErrors.info(log);
LoggerManager.loggerInfo.info(log);
}
}
依赖关系:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
这部分在 main 开始时创建文件:
public static void createLogFiles()
{
String desktopPath = System.getProperty("user.home") + File.separator + "Desktop";
String fileName = desktopPath+"\CouponSystemSpringBootLog";
System.setProperty("log.name",fileName);
}
我如何从任何 class:
创建日志的示例LoggerManager.addLogErrors("错误");
现在,“addLogInfo”再次起作用,但“addLogError”或“addLogWarning”不起作用。
请帮助理解哪里做错了。
提前致谢!
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log)
{
myLogger.info(log);
}
您有类似这些方法来区分信息日志和错误日志,但方法名称对此没有影响。
您需要调用记录器的正确方法:
public static void addLogInfo(String log) {
myLogger.info(log);
}
public static void addLogErrors(String log) {
myLogger.error(log);
}