c# - 什么时候需要在 ASMX 服务中指定 log4net.Appender.FileAppender.LockingModel
问题描述
我们有一个项目,它由 3 个不同的 ASMX 服务文件组成,例如Service1.asmx
,Service2.asmx
和Service3.asmx
所有这些文件都在同一个应用程序池中运行。
我们刚刚开始使用 log4net 来记录我们的请求和响应,它似乎将每个服务的每个请求和响应都正确地记录在同一个日志文件中(这是我们想要的)。
但是,在阅读 log4net 配置示例时,我看到了一些使用log4net.Appender.FileAppender.LockingModel
.
我需要在我的场景中考虑这一点吗?这是我当前的代码:
public class Global : System.Web.HttpApplication
{
public static readonly log4net.ILog asmxDebugLog = log4net.LogManager.GetLogger("AsmxDebugLogFile");
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
}
在我的 web.config 文件中,我有
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net debug="true">
<appender name="AsmxDebugLogFile" type="log4net.Appender.RollingFileAppender">
<file value="App_Data/log4net_ASMX.DEBUG_" type="log4net.Util.PatternString" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyy-MM-dd'.log'" />
<staticLogFileName value="false" />
<maximumFileSize value="5GB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<logger name="AsmxDebugLogFile">
<level value="DEBUG" />
<appender-ref ref="AsmxDebugLogFile" />
</logger>
</log4net>
</configuration>
我们是这样记录的
asmxDebugLog.Debug("Log something useful");
解决方案
当记录器并非全部在一个进程中时,您才真正需要关心锁定,对您而言,它们似乎是(1 个应用程序池〜= 1 个进程)。
默认锁定模式是 'exclusive' ,这是最快的,因此您不需要(或想要)更改它(并减慢它的速度)。
如果您稍后将服务拆分为不同的应用程序池,则可以选择InterProcess(如果都在同一台机器上)或Minimal。
推荐阅读
- vba - 从其他日历获取数据
- cypress - cypress 等待元素,然后执行下一个操作
- spring-boot - 在springboot中将执行的powershell脚本数据作为响应体发送
- html - 如何禁用“表格”标签行为
- windows - 查找名称从 Pc 更改为 Pc 的 reg 键
- threadx - 如何使用带有小缓冲区的 TraceX
- node.js - 诊断 Bull/Redis 超时问题
- python - 获取回答熊猫中过滤器的所有值的索引
- amazon-web-services - 如何赋予 EFS 完全权限 von CloudFormation 模板
- c++ - 字符串不想存储 2700 个字符的单词