Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWS Elastic Beanstalk应用程序日志记录(带Logback)_Java_Amazon Web Services_Tomcat_Amazon Elastic Beanstalk_Logback - Fatal编程技术网

Java AWS Elastic Beanstalk应用程序日志记录(带Logback)

Java AWS Elastic Beanstalk应用程序日志记录(带Logback),java,amazon-web-services,tomcat,amazon-elastic-beanstalk,logback,Java,Amazon Web Services,Tomcat,Amazon Elastic Beanstalk,Logback,编辑:添加了图像(问题似乎是未写入日志文件) 我正在AWS Elastic Beanstalk上运行一个spring mvc(不是springboot)WAR文件,该文件位于“64位Amazon Linux 2/4.1.3上运行Corretto 11的Tomcat 8.5”环境中 除了我用slf4j/logback编写的应用程序日志外,其他一切都正常工作 以下是我的logback.xml配置文件 <?xml version="1.0" encoding="UT

编辑:添加了图像(问题似乎是未写入日志文件)

我正在AWS Elastic Beanstalk上运行一个spring mvc(不是springboot)WAR文件,该文件位于“64位Amazon Linux 2/4.1.3上运行Corretto 11的Tomcat 8.5”环境中

除了我用slf4j/logback编写的应用程序日志外,其他一切都正常工作

以下是我的logback.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE xml>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="APPLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/var/log/java.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>/var/log/java_%d{yyyy-MM-dd}_%i.log</FileNamePattern>
            <!-- keep 14 days' worth of history -->
            <maxHistory>14</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the File size reaches 10MB -->
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%thread][%X{remoteHost}] %-5level %c{1} - %msg%n</pattern>
            <!-- <pattern>%d %-5p %c{1} - %m%n</pattern> -->
        </encoder>
    </appender>
    <logger name="com.personal.service.layer.mongodb" level="INFO"
        additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <logger name="org.springframework" level="INFO"
        additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <logger name="spring.web" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="APPLOG" />
    </root>

</configuration>
在网上做了一些研究之后,我尝试了一些其他的组合。例如,我尝试将logback.xml中的日志文件设置为
/var/app/current/logs/applog.log
,并在conf文件中使用
/var/log/current/logs/*.log
,而不是上面显示的内容,但它们也不起作用。所以我觉得我错过了一些关于使用Logback登录AWS的信息

我也愿意接受关于使用其他东西(log4j、java日志等)进行日志记录的建议

编辑:最终解决了aws/eb问题,并能够通过ssh连接到环境。我没有看到在var/log文件夹下创建的java.log(或与此相关的任何其他文件夹)

为什么logback不写日志?日志路径
/var/log/java.log
不可用吗


这对我来说现在很有效,这要归功于我在年提出的公认答案

我想把我从这两个问题中学到的东西结合起来,因为这个问题是关于阅读日志的,而这个问题是关于写日志的,在一个地方有完整的答案会很好

以下是我对logback.xml和ebextensions配置文件所做的更改,如问题中所述:

(1) 在logback.xml中,将
/var/log/java.log
更新为
/var/log/tomcat/java.log

(2) 在ebextensions配置文件中,将
/var/log/*.log
更新为
/var/log/tomcat/*.log
(这是可选的,即使保留为
/var/log/*.log
,它也会工作)

它无法在
/var/log
文件夹中工作的原因是对该文件夹的权限。当我使用ssh连接到该文件夹时,我发现该文件夹的权限仅限于
root
user

但是,当应用程序与Tomcat一起运行时,它是以用户
Tomcat
的身份运行的,该用户没有写入该文件夹的权限。但是,用户
tomcat
具有写入
/var/log/tomcat
文件夹的权限

我找到的另一个文件夹是为app
/var/app
创建的文件夹,tomcat用户可以访问该文件夹。因此,如果日志文件位置设置在logback.xml中的该文件夹内,它也可以工作(还需要更新ebextensions配置文件以指向该位置)

我花了几天的时间终于弄明白了这一点,希望它也能帮助其他人


另外,我从我的logback.xml中取出了
控制台pender
,它什么也没做。

日志文件是否保存在您认为的位置?你能用ssh连接到EB实例中,并检查日志吗?我正在尝试,但无法。刚刚在我的windows计算机上安装了aws和eb,但仍然没有找到如何通过ssh连接到现有环境的方法。当我执行eb init()时,它不会列出我现有的应用程序。我已经添加了API密钥,但仍然不起作用。现在将继续挖掘。
eb-ssh
通常就足够了,假设您在创建环境更新问题时启用了ssh,并提供了更多详细信息。看来问题出在写日志而不是检索,知道吗?
files:
  "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/*.log

  "/opt/elasticbeanstalk/tasks/taillogs.d/applogs.conf" :
    mode: "000755"
    owner: root
    group: root
    content: |
      /var/log/*.log