如何将日志文件保存到泊坞窗卷中
我有一个Java应用程序。 我将我的项目导出为.war文件,构build一个Docker容器并运行它。
在我的应用程序中定义我的variables:
private static final Logger logger = Logger.getLogger(BusController.class.getName());
而对于我使用的输出例如:
logger.warning("User "+XYZ+" not found!");
然后我创build了一个logback.xml,日志将被保存在我的硬盘上timestemp。 我也在这里find了解决scheme。
<?xml version="1.0" encoding="UTF-8"?> <configuration> <include resource="org/springframework/boot/logging/logback/base.xml"/> <logger name="org.springframework.web" level="INFO"/> <timestamp key="Timestamp" timeReference="contextBirth" datePattern="yyyy-MM-dd'_'HH-mm-ss"/> <!-- Send debug messages to System.out --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- By default, encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/opt/docker-busapi/data/logs/busicroservice-${myTimestamp}.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <Pattern>%d{yyyy-MM-dd_HH:mm:ss} - %msg%n</Pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <FileNamePattern>busmicroservice.%i{yyyy-MM-dd_HH:mm:ss.SSS}}.log</FileNamePattern> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>30MB</MaxFileSize> </triggeringPolicy> </appender> <logger name="mypackage" level="INFO" additivity="false"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </logger>
这工作,所有我的日志将保存在我的Windows环境下“/ opt / docker-busapi / data / logs”(我创build的文件夹结构)
我也可以通过我的dockerfile中的-v参数来挂载额外的卷:
REGISTRY=xxxxx.net VERSION=latest IMAGE=busMicroservice SERVICE=busmicroservice LOCAL_DATA_PATH=/opt/docker-busapi/data docker run -p xxxx:xxxxx -d -v $LOCAL_DATA_PATH:/logs --name $SERVICE --hostname $SERVICE $REGISTRY/$IMAGE:$VERSION
因为如果我检查我的docker集装箱,卷被安装。 通过“docker检查busmicroservice”我得到:
"Mounts": [ { "Type": "bind", "Source": "/opt/docker-busapi/data", "Destination": "/logs", "Mode": "", "RW": true, "Propagation": "rprivate" }
但我的日志不会保存在我的日志文件夹中。 我猜path还是有问题的。 我必须在我的“docker运行”命令中放置哪条path?
看起来你在你的文件path名称上不一致,在你定义的一些地方:
/opt/docker-busapi/data/logs/
而在其他人,你有:
/opt/docker-busmicroservice/data
然后在Docker容器中,你说这应该在容器中使用:
/logs
如果您希望所有文件都转到/opt/docker-busapi/data/logs/
的主机目录 ,请首先确保该目录存在,并且您拥有正确的权限设置,然后确保您的应用程序使用/logs
作为保存目录。
那么当你运行:
docker run -p xxxx:xxxxx -d -v /opt/docker-busapi/data/logs:/logs --name my_service --hostname my_hostname image:version
那么你应该很好去。
- 如何在同一台ubuntu机器上运行两个基于angular色的dockerized应用程序
- Docker入口与REST API调用make守护进程
- 运行在Docker Container中创buildMySQL数据库的JavaScript函数
- 如何使用不同的configuration文件在Docker上运行Redis?
- Dockerfile与Tomcat:“exec:catalina.sh”没有这样的文件或目录
- 使用Dockerfile使用PostgreSql运行Tomcat
- Dockerfile – 如何运行脚本?
- Docker:无法在运行时克隆一个github私有的rebo
- 奇怪的Git错误在Docker NPM安装