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

log4j2无法写入文件

戚俊美
2023-03-14

理想情况下,我想在localhost上记录开发过程中的一切,只记录实时服务器上的错误。我在我的开发平台(Windows 10,JavaWicket)上无法登录文件。

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- https://logging.apache.org/log4j/2.x/articles.html
http://mycuteblog.com/log4j2-xml-configuration-example/ -->
<Configuration status="DEBUG">
    <Properties>
        <Property name="log-path">${sys:catalina.home}/logs</Property>
    </Properties>
    <Appenders>
        <Console name="console-log" target="SYSTEM_OUT">
            <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
        </Console>
        <RollingFile name="trace-log" fileName="${log-path}/luminous-trace.log"
            filePattern="${log-path}/luminous-trace-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingFile>
        <RollingFile name="error-log" fileName="${log-path}/luminous-error.log"
            filePattern="${log-path}/luminous-error-%d{yyyy-MM-dd}.log">
            <PatternLayout>
                <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Logger name="com.linguaclassica" level="debug" additivity="false">
            <appender-ref ref="trace-log" level="debug"/>
            <appender-ref ref="error-log" level="error"/>
            <appender-ref ref="console-log" level="debug"/>
        </Logger>
        <Root level="info" additivity="false">
            <AppenderRef ref="console-log"/>
        </Root>
    </Loggers>
</Configuration>

我已经设法得到一些日志写入我tomcat日志文件夹。

只有我的一些信息出现了。我不知道什么符号有意义,什么符号没有意义。

可公开访问页面的基页记录子类。

public class PublicBasePage extends WebPage
{
    protected static final Logger logger = LogManager.getLogger(PublicBasePage.class);

    public PublicBasePage()
    {
        super();

        logger.info(this.getClass().getName());
    }
}

[信息]2017-10-19 17:07:13.208[http-nio-8080-exec-57]PublicBasePage-com。舌类。通道主页私人网页的主页记录一条消息。

public class PrivateBasePage extends WebPage
{
    private static final Logger logger = LogManager.getLogger(PrivateBasePage.class);

    public PrivateBasePage()
    {
        super();

        logger.debug("()");
    }
}

[调试]2017-10-19 17:12:05.662[http-nio-8080-exec-62]PrivateBasePage-()

但是,私有页面的消息不会记录到文件或控制台。

public class ClientLandingPage extends PrivateBasePage
{
    private static final Logger logger = LogManager.getLogger(ClientLandingPage.class);

    public ClientLandingPage()
    {
        super();    

        logger.info("(info)");
        logger.debug("(debug)");
        logger.warn("(warn)");
    }
}

我不明白什么是失败的。

共有1个答案

孟自强
2023-03-14

好吧,这太粗心了。ClientLandingPage已过时,从未调用过,被shared/CommonOverviewPage替换。我将声明更改为

private Logger logger = LogManager.getLogger(SomethingPage.class);

而且这些圆木看起来就像我想要的那样。

昨天的日志在文件名后面附加了日期。

 类似资料:
  • 我使用带有yaml配置的Log4j2。将日志记录到控制台工作得很好,每次都会创建一个外部日志文件,但它没有条目。谢谢你的提示。 src/Main/java/my/example/log/: 创建但为空的文件是

  • 问题内容: 我正在尝试从applet编写示例文件,但无法正常工作。下面是代码。 小程序 的HTML 我也没有得到任何错误。请指教。 问题答案: 这是因为小程序位于其自己的沙箱中,在沙箱中它们需要特殊权限才能执行某些操作,例如读取或写入客户端计算机的磁盘。记住,小程序是在客户端计算机的上下文中执行的,它们是客人并且需要遵循内部规则 查看小程序可以做什么和不能做什么以获取更多详细信息

  • 我正在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代码:- 我的项目目录:- 我的log4j。xml 当我在e

  • 问题内容: 我正在尝试将BufferedImage写入jpeg文件,但是我的Java程序引发了异常。我能够成功将相同的缓冲区保存为gif和png。我尝试在Google上四处寻找解决方案,但无济于事。 码: 例外: 问题答案: OpenJDK没有本地JPEG编码器,请尝试使用Sun的JDK或使用库(例如JAI) AFAIK,关于“粉红色色调”,Java将JPEG保存为ARGB(仍然具有透明度信息)。

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

  • 问题内容: 我正在尝试执行a ,但出现以下错误: 我知道问题可能出在哪里:我的MySQL用户不能写我的文件夹。我不知道如何解决此问题,原因有两个: 我不知道如何找出MySQL用户 我不知道如何将MySQL用户添加到能够写入该文件夹的用户 我在Ubuntu Linux上。有人可以帮助我克服这两件事吗? 问题答案: 编写文件/tmp/dump.csv并将其复制过来。这将使您看到谁在运行什么。我的猜测是