java - 在 Azure 应用服务中访问 Tomcat 和 Webapp 日志
问题描述
我有一个自定义 docker 映像,其中包含已部署到 Azure 容器注册表的 Spring Boot 应用程序,现在它作为应用程序服务运行。该容器正在运行 Tomcat 8.5,因此我在目录中创建了catalina.out
日志和我自己的自定义webapp.log
文件/usr/local/tomcat/logs
。在 Azure 之外的 docker 容器中运行,我可以访问和查看日志。
但是,部署在应用服务中我无法检索实际的日志文件,并且我可以看到日志的唯一位置是在日志流中。我正在使用 log4j2 并且有一个正确的配置文件。
有没有办法访问 Tomcat catalina 和 webapp 日志?是否可以将 webapp.log 定向到/home/LogFiles/
自定义容器?
我尝试使用以下 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="filename">webapp.log</Property>
<Property name="path">$HOME\LogFiles</Property>
</Properties>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</Console>
<File name="LOGFILE" fileName="${path}\${filename}">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Logger name="appLogger" level="debug">
<AppenderRef ref="LOGFILE" level="debug"/>
</Logger>
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
解决方案
为了检索日志文件,我使用 Kudu 通过 SSH 连接到 tomcat 应用程序的主目录。连接后,将 /usr/local/tomcat/logs/ 的日志文件复制到可通过 ftp 访问的目录,您可以在其中使用 Filezilla 下载它们。第 1 步 - 复制:/home/#> cp /usr/local/tomcat/logs/*.log ./LogFiles/
第 2 步 - 使用 Filezilla ftp 到应用程序的 /LogFiles 文件夹,您应该在其中看到复制的日志。全选,右键,下载。
我不知道您如何将 tomcat 日志文件直接发送到 LOGFILES 文件夹。我认为tomcat 网站的 Azure 应用程序服务主机是一个 dockerized 容器应用程序,而应用程序服务 /LOGFILES/ 位置是外部存储。
推荐阅读
- css - 使 div 可滚动并显示伪元素
- mysql - 针对另一个表的随机 MySQL 查询验证
- javascript - 隐藏具有相同类的所有元素然后添加具有相同类的元素 Javascript
- python - 简单输入的拓扑排序导致“IndexError:列表索引超出范围”
- rust - 如何约束关联类型以接受任何引用生命周期?
- qt - 如何从我的应用程序中按键盘的某个键?
- javascript - 做一个弹出评论窗口,类似于reddit html/css/js
- python - 如何从 mse 损失项中拆分活动正则化器损失(同时显示)
- java - Hibernate:如何修复“实例标识符从 29 更改为 28”
- java - 在java中将检查的异常抛出为未检查而不是包装