Java Apache Log4j log4j.xml 配置多个错误
Java Apache Log4j log4j.xml config multiple error
我想以前可能有人问过。但是它还有一些关于如何使用 属性 的额外问题。这是我的 log4j.xml。 :-
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="myinfo">INFO</Property>
<Property name="mywarn" value="WARN"/>
</Properties>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n" />
</layout>
</appender>
<appender name="LOGFILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/temp/logfile.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="2MB" />
<param name="MaxBackupIndex" value="2" />
<priority value="WARN" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n" />
</layout>
</appender>
<appender name="UNMAPFILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/temp/unmapped.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="2MB" />
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<category name="com.ma.dev" additivity="false">
<priority value="INFO" /> <!-- <priority value="${myinfo}" /> -->
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGFILE" />
</category>
<root>
<priority value="WARN" />
<appender-ref ref="UNMAPFILE" />
</root>
</Configuration>
这是我的 Java 代码:-
包 com.ma.dev;
import org.apache.log4j.Logger;
public class App
{
public static Logger logger = Logger.getLogger(App.class.getName());
public static void main( String[] args )
{
logger.info("test");
System.out.println( "Hello World!" );
logger.warn("Dummy warning");
}
}
我得到以下 error/warning:-
log4j:WARN Continuable parsing error 2 and column 16
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 16
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (com.ma.dev.App).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hello World!
Process finished with exit code 0
在 log4j.xml 文件中我有这个 属性:-
<Properties>
<Property name="myinfo">INFO</Property>
<Property name="mywarn" value="WARN"/>
</Properties>
我想使用此 属性 将优先级更改为:-
<priority value="${myinfo}" />
可能吗?
您收到这些错误是因为您没有在 DOCTYPE 元素中包含 log4j 命名空间。您的文件顶部应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
...
关于你的第二个问题,我不太确定是否可以。
您似乎试图混合使用 Log4j 1.x 和 2.x 配置。
如果您想使用 Log4j 2.x,您应该在类路径中创建 log4j2.xml。
简单的例子:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="priorityLevel">warn</Property>
</Properties>
<Appenders>
<Console name="myConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="${priorityLevel}">
<AppenderRef ref="myConsole"/>
</Root>
</Loggers>
</Configuration>
另外你的类路径中应该有log4j-api-2.12.1.jar和log4j-core-2.12.1.jar然后你就可以使用它了
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App
{
private static final Logger logger = LogManager.getLogger(App.class.getName());
public static void main(String[] args)
{
logger.info("test");
System.out.println( "Hello World!" );
logger.warn("Dummy warning");
}
}
您可以找到更多详细信息 here。
我想以前可能有人问过。但是它还有一些关于如何使用 属性 的额外问题。这是我的 log4j.xml。 :-
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="myinfo">INFO</Property>
<Property name="mywarn" value="WARN"/>
</Properties>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="threshold" value="info" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n" />
</layout>
</appender>
<appender name="LOGFILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/temp/logfile.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="2MB" />
<param name="MaxBackupIndex" value="2" />
<priority value="WARN" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level Line: %L - %msg%n" />
</layout>
</appender>
<appender name="UNMAPFILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="c:/temp/unmapped.log" />
<param name="Append" value="true" />
<param name="MaxFileSize" value="2MB" />
<param name="MaxBackupIndex" value="2" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<category name="com.ma.dev" additivity="false">
<priority value="INFO" /> <!-- <priority value="${myinfo}" /> -->
<appender-ref ref="STDOUT" />
<appender-ref ref="LOGFILE" />
</category>
<root>
<priority value="WARN" />
<appender-ref ref="UNMAPFILE" />
</root>
</Configuration>
这是我的 Java 代码:-
包 com.ma.dev;
import org.apache.log4j.Logger;
public class App
{
public static Logger logger = Logger.getLogger(App.class.getName());
public static void main( String[] args )
{
logger.info("test");
System.out.println( "Hello World!" );
logger.warn("Dummy warning");
}
}
我得到以下 error/warning:-
log4j:WARN Continuable parsing error 2 and column 16
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 16
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (com.ma.dev.App).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Hello World!
Process finished with exit code 0
在 log4j.xml 文件中我有这个 属性:-
<Properties>
<Property name="myinfo">INFO</Property>
<Property name="mywarn" value="WARN"/>
</Properties>
我想使用此 属性 将优先级更改为:-
<priority value="${myinfo}" />
可能吗?
您收到这些错误是因为您没有在 DOCTYPE 元素中包含 log4j 命名空间。您的文件顶部应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
...
关于你的第二个问题,我不太确定是否可以。
您似乎试图混合使用 Log4j 1.x 和 2.x 配置。
如果您想使用 Log4j 2.x,您应该在类路径中创建 log4j2.xml。 简单的例子:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="priorityLevel">warn</Property>
</Properties>
<Appenders>
<Console name="myConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="${priorityLevel}">
<AppenderRef ref="myConsole"/>
</Root>
</Loggers>
</Configuration>
另外你的类路径中应该有log4j-api-2.12.1.jar和log4j-core-2.12.1.jar然后你就可以使用它了
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class App
{
private static final Logger logger = LogManager.getLogger(App.class.getName());
public static void main(String[] args)
{
logger.info("test");
System.out.println( "Hello World!" );
logger.warn("Dummy warning");
}
}
您可以找到更多详细信息 here。