首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在.Net 5项目中将Sentry连接到NLog

如何在.Net 5项目中将Sentry连接到NLog
EN

Stack Overflow用户
提问于 2021-04-20 14:25:05
回答 1查看 149关注 0票数 2

我在试着把前哨和NLog联系起来。我想在文件文本中使用警告级别来编写日志,在Sentry中使用其他级别。

这是我的NLogConfiguration文件:

代码语言:javascript
运行
复制
            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:

代码语言:javascript
运行
复制
    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();

这是我的初创公司:

代码语言:javascript
运行
复制
        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/)。有谁能帮帮我吗?谢谢

EN

Stack Overflow用户

发布于 2021-04-20 15:49:06

我是这样决定的:

代码语言:javascript
运行
复制
        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;
        }

它起作用了。

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67173555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档