Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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# Log4Net未在Asp.Net Core 3.1 API的bin文件夹中创建日志_C#_Asp.net Core_Log4net_Asp.net Core 3.1 - Fatal编程技术网

C# Log4Net未在Asp.Net Core 3.1 API的bin文件夹中创建日志

C# Log4Net未在Asp.Net Core 3.1 API的bin文件夹中创建日志,c#,asp.net-core,log4net,asp.net-core-3.1,C#,Asp.net Core,Log4net,Asp.net Core 3.1,我正在尝试用Asp.NEt Core 3.1 API编写日志。但它没有写入bin文件夹。相反,它在项目目录的Temp文件夹中创建了日志文件 Microsoft.Extensions.Logging.Log4Net.AspNetCore版本3.1.0 log4net.config <?xml version="1.0" encoding="utf-8" ?> <log4net> <appender name="RollingLogFileAppender" typ

我正在尝试用Asp.NEt Core 3.1 API编写日志。但它没有写入bin文件夹。相反,它在项目目录的
Temp
文件夹中创建了日志文件

Microsoft.Extensions.Logging.Log4Net.AspNetCore版本3.1.0

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
    <file value="Temp\" />
    <datePattern value="yyyy-MM-dd.'txt'"/>
    <staticLogFileName value="false"/>
    <appendToFile value="true"/>
    <rollingStyle value="Date"/>
    <maxSizeRollBackups value="100"/>
    <maximumFileSize value="15MB"/>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level App  %newline %message %newline %newline"/>
    </layout>
  </appender>
  <root>
    <level value="ALL"/>
    <appender-ref ref="RollingLogFileAppender"/>
  </root>
</log4net>

此行将文件夹设置为Temp:

将其更改为
bin
文件夹的完整路径或相对于应用程序的
工作目录的
bin
文件夹的路径

例如:
\
\bin\

默认情况下,Visual Studio将运行项目并将
工作目录
设置为项目路径


在项目设置中,在调试部分,您可以手动将
工作目录
覆盖到bin,或者您可以将启动模式从
项目
更改为
可执行文件
,并在bin文件夹中选择可执行文件。

log4net将始终使用当前目录(工作目录)作为配置文件中定义的realitve路径的根,因此当应用程序通过VS启动时,它指向项目文件夹,当应用程序直接在bin文件夹中启动时,日志文件将放置在bin文件夹中。

它仍然没有在bin文件夹中创建文件,它自己创建项目文件夹,这取决于您执行二进制文件的方式。我已将我的答案更新为更通用的答案,以便您可以为启动应用程序的方式设置适当的路径。我正在从visual studio运行该项目,因此默认情况下,它应该在bin文件夹中创建文件,。在早期的.net版本中,它曾经是这样的。在.net核心中,它不是这样的。启动服务器时,您应该看到
内容根路径
设置为项目文件夹,而不是bin文件夹。
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddLog4Net();
}