.net 服务器 错误日志文件,总结:利用asp.net core日志进行生产环境下的错误排查(asp.net core version 2.2,用IIS做服务器)...

概述

调试asp.net core程序时,在输出窗口中,在输出来源选择“调试”或“xxx-ASP.NET Core Web服务器”时,可以看到类似“info:Microsoft.AspNetCore.Hosting.Internal.WebHost[2] Request finished in 285.6ms 200 text/css”这样的内容,这就是asp.net core的日志

如果出现了未捕获的异常,在输出窗口中可以看到出错信息,如:fail: Microsoft.AspNetCore.Server.Kestrel[13]……An unhandled exception was thrown by the application. System.NullReferenceException: 未将对象引用设置到对象的实例。在……行号 xx 在……行号 xx

如果在生产环境中可以把这些出错信息保存下来,将对排查代码错误很有帮助。

代码发布后,可以看到一个web.config文件,其中有一个aspNetCore标签,把stdoutLogEnabled属性设置为true。这样,在网站运行后,默认会在/logs文件夹下产生一个stdout_xxx_xxx.log的文件,日志会保存到这里面。

控制日志数量

修改appsettings.json中的Logging/LogLevel/Default值。日志级别从低到高为Trace 、Debug 、Information 、Warning 、Error 、Critical 、None。级别越低,输出的日志越多。如果仅想输出错误信息,可把级别设置成Error。如果把级别设置成None,将会阻止所有级别的日志输出。

值得注意的时,在网站运行状态下,修改appsettings.json中的上述配置,不会造成网站重启(而修改web.config会造成网站重启),但对日志级别的控制会立即生效。

添加web.config到源代码项目中

新建的asp.net core 2.2项目,默认没有web.config文件。可以通过“添加”、“新建项”、“Web配置文件”的方式手动添加。这样就可以在源码项目中设定web.config的内容了。

使日志包含时间

1、安装nuget包LoggingAdvanced.Console

2、修改Program.cs的CreateWebHostBuilder方法,在其中的方法调用链的最后,调用ConfigureLogging方法,修改后的代码如下:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args)

.UseStartup()

.ConfigureLogging((hostingContext, loggingBuilder)=>{

loggingBuilder.ClearProviders();//清除所有提供程序

loggingBuilder.AddDebug();//添加Debug提供程序

loggingBuilder.AddEventSourceLogger();//添加EventSource提供程序

var loggingSection = hostingContext.Configuration.GetSection("Logging");

loggingBuilder.AddConsoleAdvanced(loggingSection);//添加LoggingAdvanced.Console提供程序

});

3、修改appsettings.json的中的Logging部分,修改后如下:

"Logging": {"IncludeTimestamp": true,"IncludeLogNamespace": true,"TimestampPolicy": {"TimeZone": "Ulaanbaatar Standard Time","Format": "yyyy/MM/dd HH:mm:ss.fff"},"LogLevel": {"Default": "Warning"}

}

参考资料

1、有关“日志提供程序”、“日志级别”、“日志筛选”等概念,请参考官方文档:Logging in .NET Core and ASP.NET Core

原文:https://www.cnblogs.com/sdBob/p/12436281.html

### 部署和配置指南:在IIS上安装.NET 8应用程序 #### 准备工作 为了成功部署.NET 8应用程序到Internet信息服务(IIS),需先确认服务器环境已满足最低需求。确保操作系统支持.NET 8,并且已经安装了最新版本的Windows Server以及IIS服务。 #### 安装.NET 8 Hosting Bundle 通过下载并执行官方提供的.NET 8 Hosting Bundle来完成必要的运行库和支持工具的安装[^1]。此包会自动处理ASP.NET Core模块注册至IIS的过程,简化后续应用发布流程。 ```powershell # 使用PowerShell脚本自动化Hosting Bundle的安装过程 Start-Process "https://dotnet.microsoft.com/download/dotnet/8.0" ``` #### 应用程序池设置 创建一个新的应用程序池专门用于托管.NET 8的应用实例。选择".NET CLR version"选项卡下的"No managed code"模式,因为.NET Core及以上版本采用的是独立于传统CLR的方式运作。 #### 发布项目文件 利用Visual Studio中的“发布”功能或是命令行工具`dotnet publish`指令打包编译后的Web应用程序。将生成的内容复制到目标服务器对应的网站根目录下。 ```bash # 命令行方式构建与发布 dotnet publish -c Release -o ./publish_output_path ``` #### 绑定站点路径 进入IIS管理控制台,在默认Web Site或其他自定义站点节点右键菜单中选取“添加应用程序”。指定唯一的别名(Alias),并将物理路径指向之前发布的文件夹位置。 #### 测试访问 启动浏览器输入相应URL地址验证部署成果。如果一切正常,则可以看到由新部署的应用所提供的页面响应;若有错误提示,请依据日志记录排查可能存在的配置失误之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值