Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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
Asp.net mvc Log4Net可以';在任何地方都找不到日志文件_Asp.net Mvc_Logging_Log4net_Configure - Fatal编程技术网

Asp.net mvc Log4Net可以';在任何地方都找不到日志文件

Asp.net mvc Log4Net可以';在任何地方都找不到日志文件,asp.net-mvc,logging,log4net,configure,Asp.net Mvc,Logging,Log4net,Configure,关于如何配置log4net,我遵循了许多不同的指南,它已经启动并运行,但我在任何地方都找不到日志文件 我的配置是这样的: Web.Config StartUp.cs 声明 伐木 其中我的文件值为: 我尝试了几种方法,并指出了上面的内容,但没有成功 我做错了什么 更新: 正如John H所建议的那样,我已经尝试在应用程序启动方法中配置和调用记录器,并尝试了几种替代配置,但没有成功。以下是一些调试信息的2个屏幕截图: 主要性能: 以下是记录器属性: 我做错了什么?从您的屏幕截图中,我们可以看到您

关于如何配置log4net,我遵循了许多不同的指南,它已经启动并运行,但我在任何地方都找不到日志文件

我的配置是这样的:

Web.Config

StartUp.cs

声明

伐木

其中我的文件值为:

我尝试了几种方法,并指出了上面的内容,但没有成功

我做错了什么

更新: 正如John H所建议的那样,我已经尝试在应用程序启动方法中配置和调用记录器,并尝试了几种替代配置,但没有成功。以下是一些调试信息的2个屏幕截图:

主要性能:

以下是记录器属性:


我做错了什么?

从您的屏幕截图中,我们可以看到您的记录器没有使用您的配置进行初始化,因为
IsDebug
false
。我从您的屏幕截图中注意到的一点是,您试图将
Web.config
的路径直接传递到
Configure()
方法。我意识到这可能是为了解决问题,因此您可能已经尝试了我的下一个建议,但是以您当前的方式调用
Configure()
将不起作用,因为
Web.config
未发布到您的
bin\debug
文件夹中。它将被称为
Web.projectname.config
。召唤

XmlConfigurator.Configure()
如果没有参数,将自动解析输出目录中的正确配置文件。我猜你已经试过了,但是如果仍然不起作用,那么也试试这个:

using log4net;

protected void Application_Start(object sender, EventArgs e)
{
    // Initialising configuration before requesting a logger.
    XmlConfigurator.Configure();

    // Requesting a logger only after the configuration has been initialised.
    var logger = LogManager.GetLogger(typeof(Global));
    logger.Info("Application started.");
}
我不确定这会有什么不同,但我觉得你的配置很好

但是,通过检查记录器上的
IsDebug
属性,您至少能够判断配置是否已被读取

编辑:另一件事,确保应用程序具有写入文件的权限。从:

RollingFileAppender扩展了FileAppender,并且在打开日志文件时具有相同的行为。调用ActivateOptions()时,appender将首先尝试打开文件进行写入。这通常在配置期间进行。如果无法打开文件进行写入,则每次将消息记录到appender时,appender都会尝试再次打开该文件。如果在记录消息时无法打开文件进行写入,则此追加器将丢弃该消息


好的,我在本教程之后开始工作:

  • 我创建了一个log4net.config文件,其内容如教程所示
  • 已使用
    [程序集:XmlConfigurator(ConfigFile=“log4net.config”,Watch=true)]
我们这样称呼它:

ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        logger.Info("Application started.");
  • 创建文件并记录内容。 我将比较配置文件的内容,看看是否存在差异,然后逐步比较所有内容,直到找到导致它无法工作的原因
谢谢你帮助我!
亲切问候

您是否介意阅读一下这篇文章及其问题,看看这是否解决了您的问题?它们听起来很相似。我曾尝试在多个场景中提供建议(尝试在上面的注释中使用代码切换),但在我的电脑上找不到任何日志文件(也按名称和扩展名搜索)如果对logger对象/实例本身有帮助的话,我将用调试后的sceenshots更新原始帖子。谢谢你的建议,我只是用“XmlConfigurator.Configure();”来代替我的,但我似乎没有得到的一件事是全局的使用,我无法引用它,我已经尝试使用了“MethodBase.GetCurrentMethod().DeclaringType”和“mvcapapplication”甚至“HttpApplication”,但“IsDebug”一直是假的…@Dimitri如果查看
Global.asax.cs
,它应该是从
HttpApplication
继承的类的名称(例如,
public class WebApiApplication:System.Web.HttpApplication
)。在您的案例中是
mvcapapplication
?另外,在第二个屏幕截图中,您是否可以查看
appender
列表以查看其中的内容?没错,它确实是mvcapapplication。我已经将此类型设置为:LogManager.GetLogger(typeof(mvcapapplication));我可以看到附加器没有结果,它是空的。我一直在寻找并尝试建议,感谢您已经给予的帮助John!很高兴您能够修复它,Dimitri,并感谢您发布您的答案。:)谢谢您的支持John,非常感谢!
readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 BasicConfigurator.Configure();
 logger.Info("Info logging ...");
 logger.Error("Homepage loading test logging ...");
XmlConfigurator.Configure()
using log4net;

protected void Application_Start(object sender, EventArgs e)
{
    // Initialising configuration before requesting a logger.
    XmlConfigurator.Configure();

    // Requesting a logger only after the configuration has been initialised.
    var logger = LogManager.GetLogger(typeof(Global));
    logger.Info("Application started.");
}
ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        logger.Info("Application started.");