在我的应用程序中,我想要登录文件和控制台。我在我的分类中使用记录器:
<?php
$possible_values = array('wc', 'bathrooms', 'bedrooms');
$stored_value = get_post_meta( $post->ID, 'field_name', true);
foreach ($possible_values as $possible_value) {
if ($stored_value == $possible_value) {
echo 'Yes have ' . $possible_value;
}
else {
echo 'No have ' . $possible_value;
}
}
?>
配置文件按预期加载(请参阅输出中的 private static Logger LOGGER = Logger.getLogger(CLASSNAME);
行):
setfile
输出:
DOMConfigurator.configure("c:\\test\\log4j2.xml");
但是当我尝试在上面的条目后直接登录时,我不会得到任何结果
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Level value for root is [DEBUG].
log4j: root level set to DEBUG
log4j: Class name: [org.apache.log4j.RollingFileAppender]
log4j: Setting property [append] to [false].
log4j: Setting property [maxFileSize] to [10MB].
log4j: Setting property [maxBackupIndex] to [10].
log4j: Setting property [file] to [c:\test\App.log].
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: setFile called: c:\test\App.log, false
log4j: setFile ended
log4j: Adding appender named [file] to category [root].
log4j: Class name: [org.apache.log4j.ConsoleAppender]
log4j: Parsing layout of class: "org.apache.log4j.PatternLayout"
log4j: Setting property [conversionPattern] to [%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n].
log4j: Adding appender named [console] to category [root].
允许程序写入文件。 无论是否加载文件,控制台输出都可以正常工作。
有人发现可能有误吗?
配置文件:
LOGGER.logp(Level.ALL, CLASSNAME, "TEST", "TEST__");
编辑:我使用log4j-1.2.17
Edit2:关闭邮件程序组件可以登录文件,而上面的代码仍然只能登录控制台窗口......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false" />
<param name="maxFileSize" value="10MB" />
<param name="maxBackupIndex" value="10" />
<param name="file" value="c:\\test\\App.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="file" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
答案 0 :(得分:2)
如果文件存在且您有append = false,则无法登录该文件。
<param name="append" value="false" />
将此行更改为true,或者删除该文件应解决您的问题,不会将任何内容写入文件。
答案 1 :(得分:1)
所以,基本上你是在尝试使用jdk日志记录和log4j实现。为此你需要使用&gt; log4j 2.0。并使用log4j-jul适配器将对jdk logging api的所有调用路由到log4j2。
你可以尝试如下.. 依赖关系:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jul</artifactId>
<version>2.1</version>
</dependency>
示例类文件
package com.test.log4j_test;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class App
{
private static final String CLASSNAME = "App.class";
private static Logger LOGGER = Logger.getLogger(CLASSNAME);
public static void main( String[] args ) throws FileNotFoundException, IOException
{
LOGGER.logp(Level.WARNING, CLASSNAME, "TEST", "TEST__");
}
}
log4j.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<File name="A1" fileName="c:\\test\\app.log" append="true">
<PatternLayout pattern="%t %-5p %c{2} - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.apache.log4j.xml" level="debug">
<AppenderRef ref="A1"/>
</Logger>
<Root level="ALL">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="A1"/>
</Root>
</Loggers>
</Configuration>
要运行此程序,请在下面添加java属性
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j.configurationFile=file:///c:/test/log4.xml