com*_*tta 79 java spring log4j spring-mvc
我已经将log4jConfigLocation放在web.xml中,但我仍然收到以下警告:
log4j:WARN No appenders could be found for logger ?
? (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>suara2</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>suara2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
Cod*_*oat 43
如果这是整个log4j.properties文件,看起来你实际上从未真正创建过记录器.你需要一条线:
log4j.rootLogger=debug,A1
Run Code Online (Sandbox Code Playgroud)
Ala*_*Dea 29
我将log4j.properties放在类路径中的正确位置,并且仍然使用直接使用它的任何内容得到此警告.由于某些原因,使用log4j通过commons-logging的代码似乎没问题.
如果你有:
log4j.rootLogger=WARN
Run Code Online (Sandbox Code Playgroud)
将其更改为:
log4j.rootLogger=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n
Run Code Online (Sandbox Code Playgroud)
根据http://logging.apache.org/log4j/1.2/manual.html:
根记录器是匿名的,但可以使用Logger.getRootLogger()方法访问.root没有附加默认的appender.
这意味着您需要为根记录器指定一些appender,任何appender以使日志记录发生.
将该控制台 appender 添加到rootLogger会使此投诉消失.
小智 18
当您log4j.properties不在类路径中时,您可能会收到此错误.
这意味着您必须移动log4j.properties到src文件夹并将输出设置为bin文件夹,以便在运行时log4j.properties从bin文件夹中读取,并且您的错误将很容易解决.
如果log4j无法在任何地方找到"log4j.properties"或"log4j.xml"文件,您会看到此警告.
小智 7
或者,您可以执行我所做的操作,并在加载日志配置文件之前定义记录器.这就像他们说的那样:"把车放在马前."
在代码中:
public static Logger logger = Logger.getLogger("RbReport");
Run Code Online (Sandbox Code Playgroud)
... 稍后的
PropertyConfigurator.configure(l4j);
logger = Logger.getLogger("RbReport");
Run Code Online (Sandbox Code Playgroud)
修复是在加载配置后初始化记录器.
对于极客来说,它是"放笛卡尔马d4马".
小智 5
如果要配置独立的log4j应用程序,可以使用BasicConfigurator.此解决方案不适用于Spring环境等Web应用程序.
你需要写 -
BasicConfigurator.configure();
Run Code Online (Sandbox Code Playgroud)
要么
ServletContext sc = config.getServletContext();
String log4jLocation = config.getInitParameter("log4j-properties-location");
String webAppPath = sc.getRealPath("/");
String log4jProp = webAppPath + log4jLocation;
PropertyConfigurator.configure(log4jProp);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
286884 次 |
| 最近记录: |