当前位置: 首页 > 知识库问答 >
问题:

无法使用log4j2中的RollingFileAppender写入日志

宓博实
2023-03-14

我正在Servlet 3.0和Tomcat中做一个简单的演示项目
我接受邮递员的JSON请求并提供JSON响应。
现在我也想在我的项目中做日志记录。

所以我使用log4j2
罐子使用:-
log4j-1.2.12.jar,
jackson-databind-2.6.3.jar,
jackson-core-2.6.3.jar

Servlet代码:-

@WebServlet("/StatusServlet")
public class TestingServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    Logger logger = Logger.getLogger(TestingServlet.class);

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub


        BasicConfigurator.configure();

        String requestData = request.getReader().lines().collect(Collectors.joining());
        System.out.println(requestData);

        // 2. initiate jackson mapper

            ObjectMapper mapper = new ObjectMapper();

            TestingPojo pojo = mapper.readValue(requestData, TestingPojo.class);

           logger.info("status "+pojo.getStatus());
            PrintWriter out = response.getWriter();
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            mapper.writeValue(out, pojo.getStatus());
            out.flush(); 


    }

我的项目目录:-

Webservice            
   |-src         
      |- com       
          |-test          
             TestingPojo.java               
             TestingServlet.java       
             log4j2.xml

我的log4j。xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="TRACE">
    <Properties>
        <Property name="logPath">/tmp</Property>
        <!-- <Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %F : %C 
            : %M() : THREAD[%t] : LINE[%L] : [%m]%n</Property> -->
        <Property name="patternInfo">%d{dd/MMM/yyyy HH:mm:ss,SSS} %m%n</Property>
    </Properties>
    <Appenders>
        <RollingFile name="RollingFile" fileName="${logPath}/i-am.log"
            filePattern="${logPath}/webservice-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${patternInfo}" />
            <Policies>
                <SizeBasedTriggeringPolicy size="10MB" />
                <TimeBasedTriggeringPolicy interval="1"
                    modulate="true" />
            </Policies>
            <!-- <DefaultRolloverStrategy max="10 MB"/> -->
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="root" level="debug" additivity="false">
            <appender-ref ref="RollingFile" level="debug" />
        </Logger>
        <Root level="TRACE" additivity="false">
            <AppenderRef ref="RollingFile" />
        </Root>
    </Loggers>
</Configuration>

当我在eclipse中运行代码时,我会在控制台中以模式格式获取日志
但是,当我在远程服务器中部署代码时,在提到的滚动文件附件路径中没有日志。没有创建任何文件。

我的配置有什么问题吗
我还使用了基本配置程序。configure(),还有其他方法吗?

共有1个答案

姬坚成
2023-03-14

我为你找到了同样的文章。您需要更改目录log4j2.xml)

点击这里!

有两种解释,

  1. 放置log4j2。类路径中的xml(推荐)

这不可能是OP的问题,但我希望你能提醒我。

> >请考虑添加控制台AppRead,在IDE控制台中看到它将是很好的。

请考虑重用ObjectMapper: Jackson性能, javadoc

 类似资料:
  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 理想情况下,我想在localhost上记录开发过程中的一切,只记录实时服务器上的错误。我在我的开发平台(Windows 10,JavaWicket)上无法登录文件。 log4j2.xml 我已经设法得到一些日志写入我tomcat的文件夹。 只有我的一些信息出现了。我不知道什么符号有意义,什么符号没有意义。 可公开访问页面的基页记录子类。 [信息]2017-10-19 17:07:13.208[ht

  • 我在Spring Boot应用程序中使用log4j2来简化日志记录。这是我的配置log4j2-dev.xml 我在项目中的基本类 以下是我如何编写日志: 它在正常情况下工作正常。但是,如果我使用Jmetter发送大量请求(总计:7996,平均:98条消息/秒),我会发现日志记录速度太慢,在停止发送请求大约1.5分钟后,日志记录仍在继续,日志文件的容量仍在增加。 我已经搜索了很多,但仍然不知道如何加

  • 问题内容: 我习惯在普通的log4j上使用。现在,我切换到,无法使附加程序正常工作。 下面的附加程序可以正常工作。但是永远不会创建的日志文件。为什么? 问题答案: 该标记缺少属性。

  • 我正在使用log4j2。 我想创建一个RollingFileAppender,它每天旋转日志文件。在应用程序启动之前,日志文件的名称是未知的(日志文件名是从应用程序配置组装而来的)。 这就是为什么我需要在运行时添加RollingFileAppender。 我有以下代码: 问题是这段代码完全没有改变什么。未向配置中添加追加器和记录器。以编程方式创建的“文件记录器”不可用。 执行上述代码后,我使用此代

  • 我使用的是log4j2 2.7版本,并且我配置了log4j2附加器,该附加器应每分钟滚动一次: 但由于一些未知的原因,我在日志翻转期间收到以下异常: 但如果我将%I更新为C://ssvp-api.log//api.%d{yyyymmdd.hhmm}-%I.log,则一切正常,但我不想在日志文件名中添加其他文件号(例如API.20180606.1448-1.log) 有没有机会避免在日志文件名中有文