0

I am using asp.net core project with full .net framework 4.6.2 using NLog.Web.AspNetCore (4.3.1) nuget package. Following are my configurations.

nlog.config

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  autoReload="true"
  internalLogLevel="Warn"
  internalLogFile="c:\Logs\internal-nlog.txt">
  <!-- define various log targets -->
<targets>
  <!-- write logs to file -->
    <target xsi:type="File" name="allfile" fileName="c:\Logs\nlog-all-${shortdate}.log"
        layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception:format=stacktrace}"
        maxArchiveFiles="100"
        archiveFileName="c:\LogsBackup\nlog-all-${shortdate}.{##}.log"
        archiveNumbering="DateAndSequence"
        archiveAboveSize="10000000"
        archiveDateFormat="yyyyMMdd" />
    <target xsi:type="File" name="ownFile-web" fileName="c:\Logs\nlog-own-${shortdate}.log"
         layout="${longdate}|${logger}|${uppercase:${level}}|  ${message} ${exception:format=stacktrace}" />
    <target xsi:type="Null" name="blackhole" />
</targets>
<rules>
  <!--All logs, including from Microsoft-->
  <logger name="*" minlevel="Trace" writeTo="allfile" />
  <!--Skip Microsoft logs and so log only own logs-->
  <!--<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />-->
  <!--<logger name="*" minlevel="Trace" writeTo="ownFile-web" />-->
</rules>
</nlog>

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        //add nlog
        //env.ConfigureNLog("nlog.config");
        //loggerFactory.ConfigureNLog("nlog.config");
        //loggerFactory.AddNLog();
        app.AddNLogWeb();

        //add identity server authentication
        //app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
        //{
        //    Authority = "http://localhost:5000",
        //    RequireHttpsMetadata = false,
        //    ApiName = "prismapi"
        //});

        app.UseMvcWithDefaultRoute();

        app.UseSwagger();
        app.UseSwaggerUI(options =>
        {
            options.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Prism api version 1");
        });
  }

For some reason, its not emitting logs. Nlog is not even creating its internal log file. Interestingly if I uncomment env.ConfigureNLog("nlog.config"); it starts to create at least its internal log file but still no success with the actual log file.

1 Answer 1

1

Probably you need to uncomment loggerFactory.AddNLog(); before app.AddNLogWeb(); in your Configure method.

env.ConfigureNLog("nlog.config"); should be in constructor according the examples in the documentation.

Please also look at How to use section in https://github.com/NLog/NLog.Extensions.Logging

I also want to advice to start with the same lines of code as in the examples. If that's working change them according your needs.

Hope this helps.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.