【问题标题】:Unable to initialize logger with Spring MVC无法使用 Spring MVC 初始化记录器
【发布时间】:2023-03-14 18:18:01
【问题描述】:

这是我的 bean 类 AppLogger.java

public class AppLogger {

    private String logMessage;

    public String getLogMessage() {
        return logMessage;
    }

    public void setLogMessage(String logMessage) {
        this.logMessage = logMessage;
    }
}

我的 log4j.properties

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

# 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{ABSOLUTE} %5p %c{1}:%L - %m%n

# Root logger option
log4j.rootLogger=debug, file, stdout

我的 Log4j.xml

<bean id="appLogger" class="com.sort.model.AppLogger">
   <property name="message" value="Logger!"/>
   </bean>

我的 Web.xml

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/Log4J.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

我的控制器,我正在尝试记录示例消息。

public class BasicFormController {

    private static final Logger logger = Logger.getLogger(BasicFormController.class);

    @ModelAttribute("evaluation")
    protected List<String> referenceData(HttpServletRequest request) throws Exception {

        logger.info("creating a message");
        List<String> evaluation = new ArrayList<String>();
        evaluation.add("Evaluated");
        evaluation.add("Not Evaluated");
        return evaluation;

    }
}

我的 servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <!-- Enable annotation driven controllers, validation etc... -->
    <mvc:annotation-driven />
    <context:component-scan base-package="com.sort.controller" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value></value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    </bean>
    </beans>

我的构建路径中有 log4j-1.2.14.jar。 现在的问题是,我收到 404 错误。该应用程序运行良好,无需所有这些 Log4j 相关问题。
你能帮我解决这个问题吗?
或者有人可以指导我举一个合适的例子来演示 Spring MVC 项目的日志记录吗?

【问题讨论】:

  • 我看起来你的 log4jConfigLocation 应该是 /.../log4j.properties 至于你的 Log4j.xml 我不明白这是什么 - 除了 log4j 配置文件之外的所有内容。 stackoverflow.com/questions/4400583/…
  • @BorisTreukhov 感谢您的快速回复。我在我的 web.xml ../conf/log4j.properties 中尝试了这个,但仍然无法正常工作。
  • 什么不起作用?您有 404 错误的事实与日志记录无关,而是调度程序 servlet/映射/控制器问题。您的应用程序是否启动,Spring 容器是否已初始化?当它被初始化时,你会得到任何 bean 初始化异常吗?
  • @BorisTreukhov 正如我之前提到的,每当我添加新内容(例如 jar 文件)时都会出现问题,而不是因为应用程序中存在其他错误。现在我已经给出了与我添加的记录器相关的整个项目。该应用程序在没有这个但没有这个的情况下启动。无论如何,我已经发布了我的 servlet.xml。

标签: spring spring-mvc log4j


【解决方案1】:

我使用了 xml 方法并记录了代码流。感谢您的所有回复。

这里是我用过的log4j.xml...

<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration debug="true">

    <appender name="ROLL" class="org.apache.log4j.RollingFileAppender">
        <!-- The active file to log to -->
        <param name="file" value="D:/portal.log" />
        <param name="append" value="true" />
        <param name="encoding" value="UTF-8" />

        <rollingPolicy class="org.apache.log4j.TimeBasedRollingPolicy">
            <!-- The file to roll to, this is a fairly intelligent parameter, if the 
                file ends in .gz, it gzips it, based on the date stamp it rolls at that time, 
                default is yyyy-MM-dd, (rolls at midnight) See: http://logging.apache.org/log4j/companions/extras/apidocs/org/apache/log4j/rolling/TimeBasedRollingPolicy.html -->
            <param name="FileNamePattern" value="D:/portal.%d.log.gz" />
        </rollingPolicy>

        <layout class="org.apache.log4j.PatternLayout">
            <!-- The log message pattern -->
            <param name="ConversionPattern" value="%5p %d{ISO8601} [%t][%x] %c - %m%n" />
        </layout>
    </appender>

    <!-- Loggers to filter out various class paths -->

    <logger name="org.hibernate.engine.loading.LoadContexts"
        additivity="false">
        <level value="error" />
        <appender-ref ref="ROLL" />
    </logger>

    <!-- Debugging loggers -->

    <!-- Uncomment to enable debug on calpoly code only -->
    <!-- <logger name="edu.calpoly"> <level value="debug"/> <appender-ref ref="ROLL" 
        /> </logger> -->

    <root>
        <priority value="info" />
        <appender-ref ref="ROLL" />
    </root>

</log4j:configuration>

我删除了属性文件并放弃了这种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 2013-11-26
    • 2019-02-04
    • 2014-11-08
    相关资源
    最近更新 更多