我在试着把前哨和NLog联系起来。我想在文件文本中使用警告级别来编写日志,在Sentry中使用其他级别。
这是我的NLogConfiguration文件:
public static LoggingConfiguration ConfigureTarget()
{
var config = new LoggingConfiguration();
var fileTarget = new FileTarget
{
FileName = "${basedir}\\Logger\\internal_logs\\Newfile.txt",
Layout = "${longdate}|${level:uppercase=true}|${logger}|${message}",
};
config.AddRule(LogLevel.Debug, LogLevel.Fatal, fileTarget, "*", false);
var starget = new Sentry.NLog.SentryTarget
{
Dsn = "https://xxx@xxx.ingest.sentry.io/xxx",
MinimumEventLevel = "information",
Layout = "${message}"
};
config.AddRule(LogLevel.Debug, LogLevel.Fatal, starget, "*", false);
LogManager.Configuration = config;
LogManager.ReconfigExistingLoggers();
Sentry.SentrySdk.Init();
return config;
}
这是我的program.cs:
public class Program
{
public static void Main(string[] args)
{
NLog.Config.LoggingConfiguration config = NLogConfiguration.ConfigureTarget();
var logger = NLog.Web.NLogBuilder.ConfigureNLog(config).GetCurrentClassLogger();
try
{
logger.Debug("init main");
CreateHostBuilder(args).Build().Run();
}
catch (Exception exception)
{
logger.Error(exception, "Stopped program because of exception");
throw;
}
finally
{
NLog.LogManager.Shutdown();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
})
.UseNLog();
这是我的初创公司:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "NLogSentryExercise", Version = "v1" });
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "NLogSentryExercise v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
我也尝试遵循官方文档,但可能犯了一些错误(https://docs.sentry.io/platforms/dotnet/guides/nlog/)。有谁能帮帮我吗?谢谢
发布于 2021-04-20 15:49:06
我是这样决定的:
public static LoggingConfiguration ConfigureTarget()
{
var config = new LoggingConfiguration();
var fileTarget = new FileTarget
{
FileName = "${basedir}\\Logger\\internal_logs\\logFile.txt",
Layout = "${longdate}|${level:uppercase=true}|${logger}|${message}",
};
config.AddRule(LogLevel.Trace, LogLevel.Info, fileTarget, "*", false);
config.AddSentry(o =>
{
o.Dsn = "https://xxx@xxx.ingest.sentry.io/xxx";
o.Layout = "${message}";
o.BreadcrumbLayout = "${logger}: ${message}";
o.MinimumBreadcrumbLevel = LogLevel.Info;
o.MinimumEventLevel = LogLevel.Warn;
o.AddTag("logger", "${logger}");
});
return config;
}
它起作用了。
https://stackoverflow.com/questions/67173555
复制相似问题