侧边栏壁纸
博主头像
陌上花 博主等级

回首万事皆休

  • 累计撰写 70 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

WebApi使用Log4net

种向日葵的人
2025-01-02 / 0 评论 / 0 点赞 / 9 阅读 / 2758 字

Why

  • 因为发现在别的项目和WebApi的项目中使用相同的组件存在不同的方法,所以作为记录补充。

How

  • 安装基本相同,但是需要额外安装Microsoft.Extensions.Logging.Log4Net.AspNetCore
  • 添加文件log4net.config,内容为:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
	<!--根配置-->
	<root>
		<!--日志级别:可选值: ERROR > WARN > INFO > DEBUG -->
		<level value="ERROR"/>
		<level value="WARN"/>
		<level value="INFO"/>
		<level value="DEBUG"/>
		<appender-ref ref="ErrorLog" />
		<appender-ref ref="WarnLog" />
		<appender-ref ref="InfoLog" />
		<appender-ref ref="DebugLog" />
	</root>
	<!-- 错误 Error.log-->
	<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="Log\Error\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="yyyy-MM-dd"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="ERROR" />
			<param name="LevelMax" value="ERROR" />
		</filter>
	</appender>
	<!-- 警告 Warn.log-->
	<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="Log\Warn\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="yyyy-MM-dd"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="WARN" />
			<param name="LevelMax" value="WARN" />
		</filter>
	</appender>
	<!-- 信息 Info.log-->
	<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="Log\Info\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="yyyy-MM-dd"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="INFO" />
			<param name="LevelMax" value="INFO" />
		</filter>
	</appender>
	<!-- 调试 Debug.log-->
	<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
		<!--目录路径,可以是相对路径或绝对路径-->
		<param name="File" value="Log\Debug\"/>
		<!--文件名,按日期生成文件夹-->
		<param name="DatePattern" value="yyyy-MM-dd"/>
		<!--追加到文件-->
		<appendToFile value="true"/>
		<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
		<rollingStyle value="Composite"/>
		<!--写到一个文件-->
		<staticLogFileName value="false"/>
		<!--单个文件大小。单位:KB|MB|GB-->
		<maximumFileSize value="200MB"/>
		<!--最多保留的文件数,设为"-1"则不限-->
		<maxSizeRollBackups value="-1"/>
		<!--日志格式-->
		<layout type="log4net.Layout.PatternLayout">
			<conversionPattern value="[%d{HH:mm:ss}]%m%n"/>
		</layout>
		<filter type="log4net.Filter.LevelRangeFilter">
			<param name="LevelMin" value="DEBUG" />
			<param name="LevelMax" value="DEBUG" />
		</filter>
	</appender>
</log4net>

<已自动折叠>
  • 使用注入的方式直接假如服务:builder.Logging.AddLog4Net("log4net.config");
  • 在任意的控制器中使用有两种使用方法:
//使用服务的方法
 public HomeController(ILogger<HomeController> log)
 {
     log.LogInformation("HomeController created");
 }
 //使用获取的方式
//InfoLog 为log4net.config中配置的appender节点的名称
private static ILog _log = log4net.LogManager.GetLogger("InfoLog");

Tips

  • 注意这个方式仅限于WebApi的项目中。
0
博主关闭了所有页面的评论