diff --git a/src/CncWebApi/CncWebApi.csproj b/src/CncWebApi/CncWebApi.csproj index af23f40..5c59053 100644 --- a/src/CncWebApi/CncWebApi.csproj +++ b/src/CncWebApi/CncWebApi.csproj @@ -43,6 +43,7 @@ + diff --git a/src/CncWebApi/Filters/GlobalExceptionFilter.cs b/src/CncWebApi/Filters/GlobalExceptionFilter.cs index f596ab1..e0ae035 100644 --- a/src/CncWebApi/Filters/GlobalExceptionFilter.cs +++ b/src/CncWebApi/Filters/GlobalExceptionFilter.cs @@ -4,6 +4,7 @@ using System.Web.Http; using System.Web.Http.Filters; using CncModels.Dto; using CncService; +using log4net; namespace CncWebApi.Filters { @@ -14,6 +15,8 @@ namespace CncWebApi.Filters /// public class GlobalExceptionFilter : ExceptionFilterAttribute { + private static readonly ILog _log = LogManager.GetLogger(typeof(GlobalExceptionFilter)); + /// /// 异常发生时自动调用 /// @@ -23,6 +26,7 @@ namespace CncWebApi.Filters if (context.Exception is BusinessException bex) { // 业务异常:返回对应的错误码和消息 + _log.Warn($"业务异常: [{bex.Code}] {bex.Message}"); var response = ApiResponse.Fail(bex.Code, bex.Message); context.Response = context.Request.CreateResponse( HttpStatusCode.OK, response); @@ -30,7 +34,8 @@ namespace CncWebApi.Filters else { // 未预期异常:返回通用错误提示,不暴露内部细节 - // 详细异常信息由log4net记录到日志文件 + var requestUrl = context.Request?.RequestUri?.ToString(); + _log.Error($"未处理异常: {requestUrl}", context.Exception); var response = ApiResponse.Fail( CncModels.Constants.ErrorCode.InternalError, "服务器内部错误,请稍后重试"); diff --git a/src/CncWebApi/Global.asax.cs b/src/CncWebApi/Global.asax.cs index fcd25de..fe60f5c 100644 --- a/src/CncWebApi/Global.asax.cs +++ b/src/CncWebApi/Global.asax.cs @@ -1,7 +1,9 @@ using System; +using System.IO; using System.Web; using System.Web.Http; using CncWebApi.App_Start; +using log4net; namespace CncWebApi { @@ -16,6 +18,13 @@ namespace CncWebApi /// protected void Application_Start() { + // 初始化 log4net + var logConfig = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"); + if (File.Exists(logConfig)) + { + log4net.Config.XmlConfigurator.Configure(new FileInfo(logConfig)); + } + GlobalConfiguration.Configure(WebApiConfig.Register); } diff --git a/src/CncWebApi/log4net.config b/src/CncWebApi/log4net.config new file mode 100644 index 0000000..085195f --- /dev/null +++ b/src/CncWebApi/log4net.config @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +