本文举例说明,netcore项目引入log4net 或者nlog 生成日志文件在程序根目录下,log4net.config文件部分配置如下
<log4net>
<root>
<!--ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<level value="INFO"/>
<appender-ref ref="InfoLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="ErrorLog" />
<!--<appender-ref ref="ConsoleAppender" />-->
</root>
<!--InfoLog RollingFileAppender-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<file value="logs\\"/>
<appendToFile value="true" />
<!--Date|Size|Composite-->
<rollingStyle value="Composite" />
<DatePattern value="yyyy-MM/yyyy-MM-dd'_Info.log'" />
<StaticLogFileName value="false"/>
<maxSizeRollBackups value="100"/>
<maximumFileSize value="2MB" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<ConversionPattern value="[%date] [%-5level] [%thread] [%logger] - %message %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="INFO" />
</filter>
</appender>
这样netcore程序将在程序根目录创建logs文件夹,如logs/yyyy-MM/yyyy-MM-dd_info.log。
由于docker采用镜像创建容器,我们将不太容易找到生成的程序根目录在哪里了,所有要找到日志文件就难说了。解决这个问题的关键就是找到程序根目录,采用命令如下
docker ps -a
docker exec -it 202bce78db0f /bin/bash [202bce78db0f]代表你要查看的那个容器ID
进入容器内部之后程序的用户账号将换成docker 容器id
然后就可以查看容器下的程序根目录了 如:ls
此时可以看到日志文件的目录地址,用引号包含的,这个时候不要使用cd 进入logs文件夹,否则会提示找不到文件目录,但是可以直接使用:cat 'logs\\2022-02\2022-02-21_Warn.log' 即可查看日志文件,
退出容器账号使用:exit 即可。