应该找到此配置文件,并且什么是良好的开始内容?
我使用纯Java开发桌面应用程序。因此没有网络服务器等...
#1 楼
默认情况下,Log4j
在类路径上查找名为log4j.properties
或log4j.xml
的文件。您可以通过按此处所述设置系统属性来控制用于初始化自身的文件(请参见“默认初始化过程”部分)。
例如:
java -Dlog4j.configuration=customName ....
将导致
log4j
在类路径上查找名为customName的文件。如果您遇到问题,我发现打开log4j.debug会有所帮助:初始化自身,配置的记录器/附加器以及配置方式等。
配置文件可以是java属性文件或xml文件。这是从log4j简介文档页面获取的属性文件格式的示例:
-Dlog4j.debug
评论
因此,要从不在类路径上的文件加载配置文件,您必须这样做:-Dlog4j.configuration = file:/ c:/my/folder/log4j.properties实际上是一个URL。
– bbcooper
2011年1月3日,10:10
一个可能有人会发现有用的小技巧:您还可以通过启用代码中的相应属性来打开log4j调试器-System.setProperty(“ log4j.debug”,“”);
–XXL
13年5月19日在13:29
您将java -Dlog4j.configuration = customName放在哪里?我尝试了“项目/首选项/运行/调试设置”,选择了一些配置,单击“编辑”,“参数”选项卡,VM参数。 customName是否包含.xml扩展名?
–本体
2015年8月20日在2:22
在尝试了多种变体之后,该方法起作用了:-Dlog4j.configuration = file:/// C:/mydir/subdir/log4j.properties上面的示例:-Dlog4j.configuration = file:/ c:/my/folder/log4j.properties失败了
–user1062589
16-4-1在21:11
我真的希望手册会更加强调-Dlog4j.debug可以帮助调试您的配置。
– Sridhar Sarnobat
19年1月15日在23:33
#2 楼
虽然正确设置log4j对于“实际”项目非常有用,但您可能需要一种快速而又简单的解决方案,例如如果您只是在测试新的库。如果是这样,则调用静态方法
org.apache.log4j.BasicConfigurator.configure();
会将基本日志记录设置到控制台,错误消息将消失。
评论
嗨a3。 14_Infinity我应该在哪里使用?我不明白。甚至我也为这个问题提供了更多答案。请帮我
–拉维·波特努鲁(Ravi Potnuru)
17年7月27日在10:06
请记住,这将默认为“调试”级别的日志记录,这可能是不希望的。您可以这样更改:Logger.getRootLogger()。setLevel(Level.INFO);
–forresthopkinsa
17年9月28日在21:41
不仅警告消失了,而且控制台窗口中输出了一些方便的调试信息
–烤半吸
17年11月1日在13:19
具有讽刺意味的..我们在生产状态上使用它
– aswzen
18 Mar 27 '18在9:11
#3 楼
如果您只是摆脱一切(例如,如果您正在测试中)org.apache.log4j.BasicConfigurator.configure(new NullAppender());
#4 楼
根据Apache Log4j常见问题页面:为什么我会看到有关“找不到记录器的附加程序”和“请正确配置log4j”的警告?
当默认配置文件
log4j.properties
和找不到log4j.xml
,并且该应用程序不执行任何显式配置。 log4j
使用Thread.getContextClassLoader().getResource()
查找默认配置文件,并且不直接检查文件系统。要知道放置log4j.properties或log4j.xml
的适当位置,需要了解所使用的类加载器的搜索策略。 log4j
不提供默认配置,因为在某些环境中可能会禁止将其输出到控制台或文件系统。基本上,警告该记录器未找到附加程序,这意味着您正在使用系统,但是您尚未在配置文件中添加任何Appender(例如FileAppender,ConsoleAppender,SocketAppender,SyslogAppender等),或者配置文件丢失。
有三种配置log4j的方法:使用属性文件(
log4j
),带有XML文件并通过Java代码(log4j.properties
)。rootLogger.addAppender(new NullAppender());
如果存在属性文件(例如,在安装Solr时),则需要将此文件放置在类路径目录中。
classpath
以下是Linux中如何确定类路径值的一些命令建议:
$ echo $CLASSPATH
$ ps wuax | grep -i classpath
$ grep -Ri classpath /etc/tomcat? /var/lib/tomcat?/conf /usr/share/tomcat?
或从Java:
log4j.properties
。Log4j XML是用于log4j的XML格式的基本XML配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
Tomcat
I如果使用的是Tomcat,则可以将
System.getProperty("java.class.path")
放置在log4j.properties
或 /usr/share/tomcat?/lib/
文件夹中。 />为什么log4j在J2EE或WAR应用程序中找不到我的属性文件?简短的答案:log4j类和属性文件不在同一个类加载器的范围内。 >Log4j仅使用默认的
/var/lib/tomcat?/webapps/*/WEB-INF/lib/
机制加载类。资源的处理方式类似。有关更多详细信息,请参见log4j.properties
的文档。因此,如果遇到问题,请尝试自行加载类或资源。如果找不到,log4j也不会。 ;)
另请参见:
Apache站点上log4j的简短介绍
Apache:日志记录服务:常见问题解答在Apache网站
#5 楼
您可以使用以下命令从Java应用程序内部设置log4j.properties的位置: /log4j/1.2/manual.html评论
嗯,找不到课程。导入语句始终很有用,因为代码完成并不是那么可靠。
–马丁
2014年9月9日上午10:06
#6 楼
在网上找到具有根附加器的log4j.properties或log4j.xml,并将其放在类路径中。### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
将登录到控制台。我更喜欢将日志记录到文件,以便您以后进行调查。 br />
我个人设置了多个记录器,并将根记录器设置为警告或错误级别,而不是调试。
#7 楼
不用将属性文件放在类路径上的另一种方法是直接从Java代码设置属性。这是示例代码。public class Log4JSample {
public static void main(String[] args) {
Properties properties=new Properties();
properties.setProperty("log4j.rootLogger","TRACE,stdout,MyFile");
properties.setProperty("log4j.rootCategory","TRACE");
properties.setProperty("log4j.appender.stdout", "org.apache.log4j.ConsoleAppender");
properties.setProperty("log4j.appender.stdout.layout", "org.apache.log4j.PatternLayout");
properties.setProperty("log4j.appender.stdout.layout.ConversionPattern","%d{yyyy/MM/dd HH:mm:ss.SSS} [%5p] %t (%F) - %m%n");
properties.setProperty("log4j.appender.MyFile", "org.apache.log4j.RollingFileAppender");
properties.setProperty("log4j.appender.MyFile.File", "my_example.log");
properties.setProperty("log4j.appender.MyFile.MaxFileSize", "100KB");
properties.setProperty("log4j.appender.MyFile.MaxBackupIndex", "1");
properties.setProperty("log4j.appender.MyFile.layout", "org.apache.log4j.PatternLayout");
properties.setProperty("log4j.appender.MyFile.layout.ConversionPattern","%d{yyyy/MM/dd HH:mm:ss.SSS} [%5p] %t (%F) - %m%n");
PropertyConfigurator.configure(properties);
Logger logger = Logger.getLogger("MyFile");
logger.fatal("This is a FATAL message.");
logger.error("This is an ERROR message.");
logger.warn("This is a WARN message.");
logger.info("This is an INFO message.");
logger.debug("This is a DEBUG message.");
logger.trace("This is a TRACE message.");
}
}
#8 楼
您可以使用setLevel()来设置日志级别。该级别对于轻松设置希望程序显示的信息类型很有用。
例如:
Logger.getRootLogger().setLevel(Level.WARN); //will not show debug messages
可能的级别集是:
TRACE,
调试,
警告,
错误和
致命
根据Logging Services手册
#9 楼
import org.apache.log4j.BasicConfigurator;
调用此方法
BasicConfigurator.configure();
评论
具体来说,这将写入System.out。 no-args配置方法的javadoc表示:添加一个使用PatternLayout#TTCC_CONVERSION_PATTERN的使用PatternLayout的ConsoleAppender,并打印到System.out的根目录类别。
– sunil
18年3月13日在10:29
#10 楼
要启用-Dlog4j.debug
,我转到系统,高级系统设置,环境变量,然后将系统变量_JAVA_OPTIONS
设置为-Dlog4j.debug
。#11 楼
我已经在hibernate.cfg.xml文件旁边的resources文件夹中创建了文件log4j.properties,并用下面的文本填充了该文件:错误#12 楼
您正在开发什么?您正在使用Apache Tomcat吗?log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n
我的Java应用程序中具有类似的属性。
#13 楼
我的log4j由以下属性文件修复:## direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.rootLogger=debug, stdout
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.maxFileSize=100KB
log4j.appender.file.maxBackupIndex=5
log4j.appender.file.File=./logs/test.log
log4j.appender.file.threshold=debug
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.rootLogger=debug,file
评论
嗨,我该如何添加配置以供调试到控制台和错误至文件?
– JhonArias
1月31日17:29
#14 楼
只需在src / main / assembly文件夹下创建log4j.properties。取决于是否要在控制台或文件中显示日志消息,您可以修改文件。以下将在控制台中显示您的消息。# Root logger option
log4j.rootLogger=INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#15 楼
如前所述,有两种方法第一种是将这行添加到您的主要方法中:
BasicConfigurator.configure();
将这个标准的log4j.properties文件添加到您的类路径中:采用第二种方法时,您需要确保正确初始化文件。
例如。 >
Properties props = new Properties();
props.load(new FileInputStream("log4j property file path"));
props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name");
请确保您创建了用于存储日志文件的必需文件夹。
#16 楼
尝试将log4j:configuration节点中的debug属性设置为true。<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
当配置文件被读取并用于配置log4j环境时,它将输出信息。您可能会得到更多详细信息来解决您的问题。
评论
有人知道吗?是否可以从属性配置中使用相同的选项,而不必在运行时启动时回到设置-Dlog4j.debug = true的状态?
–肯尼迪国际机场
18 Mar 28 '18在7:18
#17 楼
日志记录API-Java日志记录API通过生成适合最终用户,系统管理员,现场服务工程师和软件开发团队进行分析的日志报告,促进了客户站点的软件服务和维护。日志API捕获信息,例如安全失败,配置错误,性能瓶颈和/或应用程序或平台中的错误。核心软件包包括支持将纯文本或XML格式的日志记录传递到内存,输出流,控制台,文件和套接字。另外,日志记录API能够与主机操作系统上已经存在的日志记录服务进行交互。包java.util.logging«提供Java平台的核心日志记录工具的类和接口。
Log4j 1.x«log4j是流行的基于Java的日志记录实用程序。 Log4j是一个基于许多作者的工作的开源项目。它允许开发人员通过使用Appenders [控制台,文件,数据库和电子邮件]控制将哪些日志语句输出到各个位置。它可以在运行时使用外部配置文件进行完全配置。
Log4j具有三个主要组件:
记录器-[OFF,致命,错误,警告,信息,调试,跟踪]
Appenders
Apache Commons Logging:ConsoleAppender,FileAppender,RollingFileAppender,DailyRollingFileAppender,JDBCAppender -适用于MongoDB的
Driver
,SocketAppender :MongoDbAppender-MongoDbAppender-适用于
Driver
的布局-[PatternLayout,EnhancedPatternLayout] >
配置文件可以用XML或Java属性(键=值)格式编写。
log4j_External.properties«Java属性(键=值)格式
开头“ $ {”和结尾“}”之间的字符串被解释为键。可将替换变量的值定义为系统属性或在配置文件本身中。
设置附加器特定选项。 «log4j.appender.appenderName.option = value,对于每个命名的附加程序,您都可以配置其布局。
log4j.rootLogger=INFO, FILE, FILE_PER_SIZE, FILE_PER_DAY, CONSOLE, MySql
#log.path=./
log.path=E:/Logs
# https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html
# {%-5p - [WARN ,INFO ,ERROR], %5p 0- [ WARN, INFO,ERROR]}
log.patternLayout=org.apache.log4j.PatternLayout
log.pattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n
# System.out | System.err
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.err
log4j.appender.CONSOLE.layout=${log.patternLayout}
log4j.appender.CONSOLE.layout.ConversionPattern=${log.pattern}
# File Appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log.path}/logFile.log
#log4j:ERROR setFile(null,false) call failed. - Defaults setFile(null,true)
#log4j.appender.FILE.Append = false
log4j.appender.FILE.layout=${log.patternLayout}
log4j.appender.FILE.layout.ConversionPattern=${log.pattern}
# BackUP files for every Day.
log4j.appender.FILE_PER_DAY=org.apache.log4j.DailyRollingFileAppender
# [[ Current File ] - logRollingDayFile.log ], { [BackUPs] logRollingDayFile.log_2017-12-10, ... }
log4j.appender.FILE_PER_DAY.File=${log.path}/logRollingDayFile.log
log4j.appender.FILE_PER_DAY.DatePattern='_'yyyy-MM-dd
log4j.appender.FILE_PER_DAY.layout=${log.patternLayout}
log4j.appender.FILE_PER_DAY.layout.ConversionPattern=${log.pattern}
# BackUP files for size rotation with log cleanup.
log4j.appender.FILE_PER_SIZE=org.apache.log4j.RollingFileAppender
# [[ Current File ] - logRollingFile.log ], { [BackUPs] logRollingFile.log.1, logRollingFile.log.2}
log4j.appender.FILE_PER_SIZE.File=${log.path}/logRollingFile.log
log4j.appender.FILE_PER_SIZE.MaxFileSize=100KB
log4j.appender.FILE_PER_SIZE.MaxBackupIndex=2
log4j.appender.FILE_PER_SIZE.layout=${log.patternLayout}
log4j.appender.FILE_PER_SIZE.layout.ConversionPattern=${log.pattern}
# MySql Database - JDBCAppender
log4j.appender.MySql=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.MySql.driver=com.mysql.jdbc.Driver
log4j.appender.MySql.URL=jdbc:mysql://localhost:3306/automationlab
log4j.appender.MySql.user=root
log4j.appender.MySql.password=
log4j.appender.MySql.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.MySql.layout.ConversionPattern=INSERT INTO `logdata` VALUES ('%p', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%M', '%L', '%m');
#log4j.appender.MySql.sql=INSERT INTO `logdata` VALUES ('%p', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%M', '%L', '%m');
# Direct log events[Messages] to MongoDB Collection - MongoDbAppender
log.mongoDB.hostname=loalhost
log.mongoDB.userName=Yash777
log.mongoDB.password=Yash@123
log.mongoDB.DB=MyLogDB
log.mongoDB.Collection=Logs
log4j.appender.MongoDB=org.log4mongo.MongoDbAppender
log4j.appender.MongoDB.hostname=${log.mongoDB.hostname}
log4j.appender.MongoDB.userName=${log.mongoDB.userName}
log4j.appender.MongoDB.password=${log.mongoDB.password}
log4j.appender.MongoDB.port=27017
log4j.appender.MongoDB.databaseName=${log.mongoDB.DB}
log4j.appender.MongoDB.collectionName=${log.mongoDB.Collection}
log4j.appender.MongoDB.writeConcern=FSYNCED
MySQL表的表结构
logdata
CREATE TABLE IF NOT EXISTS `logdata` (
`Logger_Level` varchar(5) COLLATE utf8_unicode_ci NOT NULL,
`DataTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`ClassName` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`MethodName` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`LineNumber` int(10) NOT NULL,
`Message` text COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
log4j_External.xml«XML log4j:具有公共DTD的配置文件
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE log4j:configuration PUBLIC
"-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="target" value="System.out" />
<param name="threshold" value="debug" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n" />
</layout>
</appender>
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="file" value="E:/Logs/logFile.log" />
<param name="append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n" />
</layout>
</appender>
<appender name="FILE_PER_SIZE" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="E:/Logs/logRollingFile.log" />
<param name="immediateFlush" value="true"/>
<param name="maxFileSize" value="100KB" />
<param name="maxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n" />
</layout>
</appender>
<appender name="FILE_PER_DAY" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="E:/Logs/logRollingDayFile.log" />
<param name="datePattern" value="'_'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n"/>
</layout>
</appender>
<root>
<priority value="info" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
<appender-ref ref="FILE_PER_SIZE" />
<appender-ref ref="FILE_PER_DAY" />
</root>
</log4j:configuration>
Log4j从Java程序中的URL进行配置:
为了使用以下命令指定自定义配置一个外部文件,使用的类必须实现Configurator接口。
当默认配置文件“ log4j.properties”,“ log4j.xml”不可用时,
>对于“ log4j.properties”,您可以使用PropertyConfigurator.configure(java.net.URL)方法。
对于“ log4j.xml”,将使用DOMConfigurator。
public class LogFiles {
// Define a static logger variable so that it references the Logger instance named "LogFiles".
static final Logger log = Logger.getLogger( LogFiles.class );
@SuppressWarnings("deprecation")
public static void main(String[] args) {
System.out.println("CONFIGURATION_FILE « "+LogManager.DEFAULT_CONFIGURATION_FILE);
System.out.println("DEFAULT_XML_CONFIGURATION_FILE = 'log4j.xml' « Default access modifier");
String fileName = //"";
//"log4j_External.xml";
"log4j_External.properties";
String configurationFile = System.getProperty("user.dir")+"/src/" + fileName;
if( fileName.contains(".xml") ) {
DOMConfigurator.configure( configurationFile );
log.info("Extension *.xml");
} else if ( fileName.contains(".properties") ) {
PropertyConfigurator.configure( configurationFile );
log.info("Extension *.properties");
} else {
DailyRollingFileAppender dailyRollingAppender = new DailyRollingFileAppender();
dailyRollingAppender.setFile("E:/Logs/logRollingDayFile.log");
dailyRollingAppender.setDatePattern("'_'yyyy-MM-dd");
PatternLayout layout = new PatternLayout();
layout.setConversionPattern( "%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n" );
dailyRollingAppender.setLayout(layout);
dailyRollingAppender.activateOptions();
Logger rootLogger = Logger.getRootLogger();
rootLogger.setLevel(Level.DEBUG);
rootLogger.addAppender(dailyRollingAppender);
log.info("Configuring from Java Class.");
}
log.info("Console.Message.");
method2();
methodException(0);
}
static void method2() {
log.info("method2 - Console.Message.");
}
static void methodException(int b) {
try {
int a = 10/b;
System.out.println("Result : "+ a);
log.info("Result : "+ a);
} catch (Exception ex) { // ArithmeticException: / by zero
log.error(String.format("\n\tException occurred: %s", stackTraceToString(ex)));
}
}
public static String stackTraceToString(Exception ex) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
return sw.toString();
}
}
#18 楼
对我来说,解决方法是将“ log4j.properties”放入“ src”文件夹。#19 楼
如果我们在log4j上使用apache commons日志包装器,那么我们需要在classpath中同时使用这两个jar。同样,在类路径中应提供commons-logging.properties
和log4j.properties/xml
。 我们还可以使用
log4j.properties
将实现类和JAVA_OPTS
名称传递为-Dorg.apache.commons.logging.Log=<logging implementation class name> -Dlog4j.configuration=<file:location of log4j.properties/xml file>
。对于应用程序/ Web服务器,也可以通过设置JAVA_OPTS
来完成。将有助于外部化可以在部署中更改的属性。
#20 楼
这是使用.yaml逻辑结构的替代方法:
Configuration:
Properties:
Appenders:
Loggers:
示例:
Configutation:
name: Default
Properties:
Property:
name: log-path
value: "logs"
Appenders:
Console:
name: Console_Appender
target: SYSTEM_OUT
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
File:
name: File_Appender
fileName: ${log-path}/logfile.log
PatternLayout:
pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"
Loggers:
Root:
level: debug
AppenderRef:
- ref: Console_Appender
Logger:
- name: <package>.<subpackage>.<subsubpackage>.<...>
level: debug
AppenderRef:
- ref: File_Appender
level: error
参考:LOG4J 2配置:使用YAML
#21 楼
对于测试,包括设置日志级别的快速方法:org.apache.log4j.BasicConfigurator.configure();
org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.WARN);
// set to Level.DEBUG for full, or Level.OFF..
#22 楼
Maven解决方案:我遇到了上述所有相同的问题,对于Maven解决方案,我使用了2个依赖项。如果您希望使用标准配置的简单项目使用记录器,则此配置仅用于快速测试。我可以想象如果您需要更多信息和/或微调自己的日志记录级别,则以后想制作一个配置文件。
#23 楼
我只是这样做了,问题就解决了。 posts / 206875685-如何在IntelliJ-Idea内运行应用程序时修复log4j-WARN控制台消息但在这里他说的如下br />要解决此问题,只需在项目的main / resources文件夹中输入以下log4j.resources文件即可,而不是创建log4j.resources,而是创建log4j.properties。右键单击IntelliJ中的Resource-> New-> Resource Bundle-只需将其命名为log4j
#24 楼
如果即使在资源测试文件夹中添加了log4j.properties
或log4j.xml
文件后,您在Intellij IDEA上仍然出现此错误,则Intellij IDEA可能尚不知道该文件的存在。该文件,右键单击该文件,然后选择Recompile log4j.xml。
评论
对于像我这样的所有Maven家伙:将log4j.properties放入src / main / resources!log4j文档具有一个非常基本的log4j.xml文件示例。
查看Log4j的简短手册非常有帮助:logging.apache.org/log4j/1.2/manual.html