java - Log4j2 Amazon ec2 文件日志记录不起作用

标签 java log4j2 rollingfileappender

我刚刚将我的 java 服务器从 1 转换为使用 Log4j2。

我的文件日志在 Log4j1 上运行得很好:

try {
    Date currentStamp = new Date();
    String sdf = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss").format(currentStamp);
    File theFile = new File("logs/");
    theFile.mkdirs();

    fileAppender = new RollingFileAppender(
            new PatternLayout("[%d{yyyy-MM-dd HH:mm:ss}] %r [%t] %p %C - %m%n"),
            "logs/" + sdf + "_serverLog.txt");
    fileAppender.setMaxFileSize("50MB");
    fileAppender.setMaxBackupIndex(50); //2.5 gigs
} catch (IOException e) {
    e.printStackTrace();
}

这是我使用 Log4j2 的新配置(在我的本地电脑上运行良好 - 控制台/文件/电子邮件日志记录没有问题):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="http://logging.apache.org/log4j/2.0/config">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n" />
        </Console>

        <RollingRandomAccessFile name="FILE" fileName="logs/serverLog.txt" filePattern="logs/serverLog_%d{yyyy-MM-dd}_%i.txt">
            <PatternLayout>
                <Pattern>%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="50 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="50"/>
        </RollingRandomAccessFile>

        <SMTP name="EMAIL"
            subject="REMOVED"
            from="REMOVED"
            to="REMOVED"
            smtpHost="REMOVED"
            smtpPort="REMOVED"
            smtpUsername="REMOVED"
            smtpPassword="REMOVED"
            bufferSize="REMOVED">
        </SMTP>
    </Appenders>

    <Loggers>
        <Logger name="com.jayavon.game" level="debug" additivity="false">
            <AppenderRef ref="STDOUT" />
            <AppenderRef ref="FILE" />
        </Logger>
        <Root level="error" additivity="false">
            <AppenderRef ref="EMAIL" />
        </Root>
    </Loggers>
</Configuration>

我的 PROD (ec2) 服务器通过以下方式调用:

nohup /home/ec2-user/bin/startJayServer.sh &

这个脚本是:

#!/bin/sh

cd /home/ec2-user/JayServer
CLASSPATH="/home/ec2-user/JayServer/bin:/home/ec2-user/JayServer/lib/*" java -server com.jayavon.game.server.MyServer -PROD > /dev/null 2>logs/server.err

服务器启动脚本和 nohup 命令在 Log4j1 上运行良好(即文件夹权限良好)。在 DEV(我的 Windows 10 机器)上,控制台输出在 Eclipse 中工作并创建文件(错误电子邮件也可以工作)。我的 PROD 服务器启动正常,但在我的“/home/ec2-user/JayServer/logs”文件夹中没有创建文件日志。有什么想法吗?

最佳答案

在另一篇文章“log4j 2 - configuration issue”中找到了我的解决方案

“我把 log4j2.xml 放在 src/目录下。它可以工作。”

谢谢@fstang

关于java - Log4j2 Amazon ec2 文件日志记录不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60795188/

相关文章:

Java:无法显示paintComponent

java - Magnolia 5.4.7 更改列排序

java - 获取特定 log4j 函数的类、方法、行号信息的方法

java - 如何配置 Log4J2

java - 按大小和时间滚动日志

java - 是否可以在 Google App Engine 中使用文件附加程序?

java - 无法在 Android 上打开 sqlite 数据库

java - Perl 到 Java 的翻译

java - Log4j2:仅记录到文件,没有控制台?

达到maximumFileSize时的log4net滚动文件appender文件名格式