当前位置: 首页 > news >正文

给一个免费的网站省好多会员app

给一个免费的网站,省好多会员app,wordpress扫码验证下载,python做网站的多吗1. 日志目录和文件管理 日志目录:日志文件存储在 ./Exceptions 目录下。日志文件命名:日志文件的命名格式为 yyyy_MM_dd.log,表示当天的日期。如果当天的日志文件大小超过 maxFileSizeBytes(3KB),则会创建…

1. 日志目录和文件管理

  • 日志目录:日志文件存储在 ./Exceptions 目录下。
  • 日志文件命名:日志文件的命名格式为 yyyy_MM_dd.log,表示当天的日期。如果当天的日志文件大小超过 maxFileSizeBytes(3KB),则会创建新的日志文件,文件名格式为 yyyy_MM_dd_P{cnt}.log,其中 cnt 是日志文件的编号。
  • 日志文件编码:日志文件使用 UTF-8 编码。

2. 异常日志记录

  • WriteExceptionLog(Exception ex) 方法:
    该方法用于记录异常信息。首先检查日志目录是否存在,如果不存在则创建。
    获取当前日期的日志文件列表,并选择最新的日志文件(按文件名顺序)。
    如果日志文件存在且大小超过 maxFileSizeBytes,则创建一个新的日志文件,文件名中包含 _P{cnt},其中 cnt 是文件的编号。
    将异常信息追加到日志文件中,使用 GetLogEntry(ex) 方法生成异常信息的日志条目。
    最后调用 CleanupOldLogFiles() 方法清理超过 maxLogFileAgeDays(1天)的旧日志文件。

3. 日志条目生成

  • GetLogEntry(Exception ex, int depth = 0) 方法:
    – 该方法递归地生成异常信息的日志条目。
    – 每层异常信息使用 depth 参数控制缩进,便于阅读。
    – 日志条目包括异常时间、异常信息、异常对象和调用堆栈。
    – 如果异常有嵌套的内部异常(InnerException),则递归调用 GetLogEntry 方法生成内部异常的日志条目。

4. 旧日志文件清理

  • CleanupOldLogFiles() 方法:
    – 该方法用于清理超过 maxLogFileAgeDays(1天)的旧日志文件。
    –获取日志目录中所有 .log 文件,检查文件的最后修改时间,如果超过 maxLogFileAgeDays,则删除该文件。

5. 异常处理

  • 异常处理:在 WriteExceptionLog(Exception ex) 方法中,所有的操作都在 lock 块中进行,确保线程安全。如果发生异常,内部异常会被捕获但不会记录,避免日志记录本身抛出的异常导致程序崩溃。
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Shapes;namespace DataParser.Helpers;public class LogHelper
{private static readonly object objException = new object();private static readonly string logDirectory = "./Exceptions";private static string curfileName = $"{DateTime.Now:yyyy_MM_dd}.log";private static readonly int maxLogFileAgeDays = 1;private static readonly long maxFileSizeBytes = 3*1024;private static readonly Encoding encoding =Encoding.UTF8;static int cnt= 0;public static void WriteExceptionLog(Exception ex){try{lock (objException){if (!Directory.Exists(logDirectory)){Directory.CreateDirectory(logDirectory);}var files = Directory.GetFiles(logDirectory, "*.log").Select(x=>System.IO.Path.GetFileName(x)).Where(x => x.Contains($"{DateTime.Now:yyyy_MM_dd}"));if(files.Count()>0){var tmp = files.OrderBy(x => x.Length);curfileName = tmp.Last();if (curfileName.Contains("_P")){Match match = Regex.Match(curfileName, @"_P(\d+)");if (match.Success) {string str = match.Groups[1].Value;int.TryParse(str, out cnt);}}}else{curfileName = $"{DateTime.Now:yyyy_MM_dd}.log";}string fileName = System.IO.Path.Combine(logDirectory, curfileName);string logEntry = GetLogEntry(ex);if (File.Exists(fileName) && (new FileInfo(fileName).Length > maxFileSizeBytes)){cnt++;fileName = System.IO.Path.Combine(logDirectory, $"{DateTime.Now:yyyy_MM_dd}_P{cnt}.log");}else if(!fileName.Contains("_P")){cnt = 0;}File.AppendAllText(fileName, logEntry, encoding);CleanupOldLogFiles();}}catch (Exception innerEx){}}private static string GetLogEntry(Exception ex, int depth = 0){string indent = new string(' ', depth * 4);string logEntry =$"{indent}【异常时间】{DateTime.Now}{Environment.NewLine}" +$"{indent}【异常信息】{ex.Message}{Environment.NewLine}" +$"{indent}【异常对象】{ex.Source}{Environment.NewLine}" +$"{indent}【调用堆栈】{Environment.NewLine}   {ex.StackTrace?.Trim() ?? "N/A"}{Environment.NewLine}{Environment.NewLine}{Environment.NewLine}";if (ex.InnerException != null){logEntry += GetLogEntry(ex.InnerException, depth + 1);}return logEntry;}private static void CleanupOldLogFiles(){var files = Directory.GetFiles(logDirectory, "*.log").Select(f => new FileInfo(f)).Where(f => (DateTime.Now - f.LastWriteTime).TotalDays > maxLogFileAgeDays);foreach (var file in files){File.Delete(file.FullName);}}
}

Rougamo 实现AOP

导包Rougamo.Fody

using DataParser.Helpers;
using Rougamo;
using Rougamo.Context;
namespace DataParser
{public class ExceptionLogAttribute : MoAttribute{public override void OnException(MethodContext context){LogHelper.WriteExceptionLog(context.Exception);context.HandledException(this, null);}}
}
    public partial class MainViewModel:IRougamo<ExceptionLogAttribute>{

MainViewModel 类实现了接口 IRougamo<ExceptionLogAttribute>。这意味着在这个类中,所有被 ExceptionLogAttribute 特性标记的方法或类,都会在抛出异常时自动调用 ExceptionLogAttribute OnException 方法

http://www.15wanjia.com/news/19068.html

相关文章:

  • 毕业设计微信小程序开发进一步优化落实
  • 北京大兴专业网站建设公司北京最新疫情情况
  • 做网站专用软件巨量引擎广告投放平台官网
  • 支付网站服务费怎么做分录电商网站建设
  • 有什么网站可以做设计赚钱聚合搜索引擎
  • 有做任务赚钱的网站有哪些网站seo需要用到哪些工具
  • 快速建站模板自助建站网站网页设计
  • 网站开发的相关语言有哪些seo优化首页
  • 清远建设网站制作单页面网站如何优化
  • 兼职做网站在那里接任务厦门seo网站管理
  • 公司做网站app入什么科目天津百度网站快速排名
  • 有后台的网站怎么做百度热度榜搜索趋势
  • 电销管理系统哪个好用seo咨询服务价格
  • 什么样的公司专业做网站的官网seo是什么意思
  • 做网站被捉优化营商环境发言稿
  • 网站排名恢复域名ip查询
  • 淘宝接单做网站重庆seo管理平台
  • 晋江哪里可以学建设网站遵义网站seo
  • 学做网站如何创业北京网站推广公司
  • 国外游戏ui设计网站网站建设主要推广方式
  • 设计比较好的电商网站友情链接平台赚钱吗
  • 微信引流神器手机电影网站怎么做我的百度购物订单
  • 做网站 搜索引擎深圳外贸网络推广渠道
  • 贵阳网站推广有几家个人网站设计作品
  • 网站访客抓取系统谷歌seo优化公司
  • 丹阳网站建设开发线上销售怎么做推广
  • wordpress网站源码互联网营销的五个手段
  • 合作网站开发官网设计比较好看的网站
  • wordpress 文章投票插件苏州seo关键词优化价格
  • 综合性型门户网站有哪些友情链接交换的方法