Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在某些服务器上执行.net方法日志记录,而不是在其他服务器上_C#_.net_Log4net - Fatal编程技术网

C# 在某些服务器上执行.net方法日志记录,而不是在其他服务器上

C# 在某些服务器上执行.net方法日志记录,而不是在其他服务器上,c#,.net,log4net,C#,.net,Log4net,几年前,我继承了一个内联网托管的.net web应用程序,我的公司将其安装到客户拥有的服务器上。应用程序是通过IIS托管的,架构师似乎利用log4net来处理日志记录,日志记录被打印到txt日志文件中 现在,由于某种原因,在一些客户服务器上,某些文件将不会按预期打印其日志,是的,此代码正在执行,因为它们的行为正在毫无问题地执行。不打印的文件在不相关的客户服务器上是一致的,并且相同的文件总是不打印。需要明确的是,文件A和B中的方法总是在我的测试机和一些客户服务器上打印日志,但是一组不同的客户服务器

几年前,我继承了一个内联网托管的.net web应用程序,我的公司将其安装到客户拥有的服务器上。应用程序是通过IIS托管的,架构师似乎利用log4net来处理日志记录,日志记录被打印到txt日志文件中

现在,由于某种原因,在一些客户服务器上,某些文件将不会按预期打印其日志,是的,此代码正在执行,因为它们的行为正在毫无问题地执行。不打印的文件在不相关的客户服务器上是一致的,并且相同的文件总是不打印。需要明确的是,文件A和B中的方法总是在我的测试机和一些客户服务器上打印日志,但是一组不同的客户服务器都只打印文件A中的日志,而不打印文件B中的日志

例如,当通过应用程序分配流体时(该软件用于流体管理),代码通过Execute()方法,该方法调用Start()方法。如果Execute()方法没有成功地完成其逻辑并因此打印日志,则无法调用Start()方法。在一组无法正常运行的服务器上,我们将从Execute方法中看到0个日志,但是Start()方法调用后将按预期打印

所有这些日志都具有调试优先级,并且执行的优先级相同

正如我所说的,我在我的测试机器上运行的是相同版本的软件,所有这些日志都会打印出来。我甚至备份了一个有问题的服务器数据库,并在我的服务器上进行了设置,我的机器仍然正常记录

上述情况使我相信,问题不在于软件代码,也不在于通过应用程序配置站点的方式,而在于问题的一致性,也不在于日志存在缓冲区或拥塞问题

是否有人有任何想法或线索,作为什么可能导致这一点

以下是问题服务器的web.config中的Log4Net配置,与我的工作机器上的配置相同:

<log4net>
    <root>
        <level value="DEBUG" />
        <appender-ref ref="RollingLogFileAppender" />
        <appender-ref ref="ConsoleAppender" />
        <appender-ref ref="TraceAppender" />
    </root>
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="C:\lfc\web-dashboard.log" />
        <appendToFile value="false" />
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
        <rollingStyle value="Date" />
        <datePattern value="yyyyMMdd" />
        <maxSizeRollBackups value="14" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%method] - %message%newline" />
        </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%method] - %message%newline" />
        </layout>
    </appender>
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender">
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger [%method] - %message%newline" />
        </layout>
    </appender>
</log4net>


能否显示log4net配置?不是你认为在服务器上的那个,而是实际上在服务器上的那个。这可能是权限问题(服务器无法将日志文件写入给定的文件夹)。我在问题服务器的web.config中添加了我们的内容,但与我在工作机器上的内容相同。我模糊地记得我曾经遇到过一个问题,在部署过程中没有安装所需的log4net DLL,但是有人在一些服务器上手动安装了它们。我猜其中一个appender没有安装。有关如何在启动时显示配置错误的详细信息,请参阅。谢谢,这可能会有所帮助。我会调查的。