最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)異步日志記錄類的示例代碼

 更新時(shí)間:2023年11月10日 16:16:48   作者:愛吃奶酪的松鼠丶  
這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)異步日志記錄類,從而方便下次使用,不用重復(fù)造輪子,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

先定義接口類:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 異常
{
    internal interface ILog
    {
        Task WriteErrorLog(string message);

        Task WriteInfoLog(string message);

        Task WriteLog(string logType, string message);
    }
}

在去實(shí)現(xiàn):

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 異常
{
    internal class Log : ILog
    {
        public string LogDirectory { get; set; }
        public string TimeDirName { get; set; }

        private  string LogFileName { get; set; }

        private const long maxLogSize = 2*1024*1024; // 2 MB

        private string FirstLogFileName { get; set; }
        public Log() 
        {
            //在根目錄創(chuàng)建Log文件夾
            IOTools.CreatLogDir("Log");
            //初始化
            LogDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Log");
            TimeDirName = DateTime.Now.ToString("yyyyMMdd");
            FirstLogFileName = $"log_{DateTime.Now:yyyyMMddHHmmss}.txt";
        }
        public async Task WriteErrorLog(string message)
        {
             await WriteLog("Error",message);
        }

        public async Task WriteInfoLog(string message)
        {
            await WriteLog("Info", message);
        }

        public async Task WriteLog(string logType ,string message)
        {
            //創(chuàng)建文件夾
            string dirType = TimeDirName + "\\" + logType;
            IOTools.CreatDir(dirType, LogDirectory);
            LogFileName=Path.Combine(LogDirectory, dirType, FirstLogFileName);
            if (!File.Exists(LogFileName))
            {
                using (StreamWriter sw = File.CreateText(LogFileName))
                {
                   await sw.WriteLineAsync($"【{logType}】 {DateTime.Now} \r\n {message}  \r\n \r\n");
                }
            }
            else
            {
                FileInfo fileInfo = new FileInfo(LogFileName);
                if (fileInfo.Length > maxLogSize)
                {
                    string newFileName = $"log_{DateTime.Now:yyyyMMddHHmmss}.txt";
                    LogFileName = Path.Combine(LogDirectory, dirType, newFileName);
                    using (StreamWriter sw = File.CreateText(LogFileName))
                    {
                        await sw.WriteLineAsync($"【{logType}】 {DateTime.Now} \r\n {message}  \r\n \r\n");
                    }
                }
                else
                {
                    using (StreamWriter sw = File.AppendText(LogFileName))
                    {
                        await sw.WriteLineAsync($"【{logType}】 {DateTime.Now} \r\n {message}  \r\n \r\n");
                    }
                }
            }
        }


    }
}

工具類:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace 異常
{
    internal  class IOTools
    {
        public static void CreatLogDir(string name)
        {
            string rootDirectory = Directory.GetCurrentDirectory();
            CreatDir(name, rootDirectory);
        }

        public static void CreatDir(string name , string path)
        {
            if(string.IsNullOrEmpty(name)) throw new ArgumentNullException("name");
            if(string.IsNullOrEmpty(path)) throw new ArgumentNullException("path");
            string logPath = Path.Combine(path, name);
            // 判斷文件夾是否存在
            if (!Directory.Exists(logPath))
            {
                // 在當(dāng)前項(xiàng)目根目錄創(chuàng)建一個(gè)新的文件夾
                Directory.CreateDirectory(logPath);
            }

        }
    }
}

最后實(shí)現(xiàn)的效果,簡(jiǎn)潔明了

如圖:

以上就是C#實(shí)現(xiàn)異步日志記錄類的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于C#異步日志記錄類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺析.NET中AsyncLocal的實(shí)現(xiàn)原理

    淺析.NET中AsyncLocal的實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)介紹了.NET中AsyncLocal的具體實(shí)現(xiàn)原理,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,如果有講得不清晰或不準(zhǔn)確的地方,還望指出
    2023-08-08
  • C#中時(shí)間類的使用方法詳解

    C#中時(shí)間類的使用方法詳解

    這篇文章主要介紹C#中的時(shí)間類,文中主要介紹了DateTime類,TimeSpan類,DateTimeOffset類及靜態(tài)類的封裝,通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • C#操作windows系統(tǒng)進(jìn)程的方法

    C#操作windows系統(tǒng)進(jìn)程的方法

    這篇文章介紹了C#操作windows系統(tǒng)進(jìn)程的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C# 中閉包(Closure)詳解

    C# 中閉包(Closure)詳解

    這篇文章主要介紹了C# 中閉包(Closure)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C# 7.0 新特性1之基于Tuple的“多”返回值方法

    C# 7.0 新特性1之基于Tuple的“多”返回值方法

    這篇文章主要為大家詳細(xì)介紹了C# 7.0 新特性1之基于Tuple的“多”返回值方法,感興趣的小伙伴們可以參考一下
    2016-06-06
  • C#通過反射創(chuàng)建自定義泛型

    C#通過反射創(chuàng)建自定義泛型

    這篇文章主要介紹了C#通過反射創(chuàng)建自定義泛型的方法,需要的朋友可以參考下
    2014-08-08
  • C#結(jié)束進(jìn)程及子進(jìn)程

    C#結(jié)束進(jìn)程及子進(jìn)程

    這篇文章介紹了C#操作結(jié)束進(jìn)程及子進(jìn)程的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#通過Win32API設(shè)置客戶端系統(tǒng)時(shí)間的方法詳解

    C#通過Win32API設(shè)置客戶端系統(tǒng)時(shí)間的方法詳解

    在日常工作中,有時(shí)可能會(huì)需要獲取或修改客戶端電腦的系統(tǒng)時(shí)間,比如軟件設(shè)置了Licence有效期,本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述如何通過C#獲取和設(shè)置客戶端電腦的系統(tǒng)時(shí)間,僅供學(xué)習(xí)分享使用,如有不足之處,還請(qǐng)指正,需要的朋友可以參考下
    2024-06-06
  • C#中DataTable的創(chuàng)建與遍歷實(shí)現(xiàn)

    C#中DataTable的創(chuàng)建與遍歷實(shí)現(xiàn)

    這篇文章主要介紹了C#中DataTable的創(chuàng)建與遍歷實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • C# Winform 調(diào)用系統(tǒng)接口操作 INI 配置文件的代碼

    C# Winform 調(diào)用系統(tǒng)接口操作 INI 配置文件的代碼

    封裝了一小段代碼, 調(diào)用系統(tǒng)接口, 操作配置文件. 一般用于 .ini 文件, 或者其它鍵值對(duì)格式的配置文件
    2011-05-05

最新評(píng)論

桃园市| 通榆县| 东乡| 中卫市| 修文县| 囊谦县| 益阳市| 鄂尔多斯市| 邹平县| 霍城县| 明光市| 大邑县| 刚察县| 鄂伦春自治旗| 邻水| 成都市| 垫江县| 台前县| 临桂县| 芦山县| 福建省| 乌什县| 隆化县| 曲靖市| 青田县| 开鲁县| 巴林右旗| 巴林左旗| 志丹县| 屏南县| 闵行区| 牙克石市| 田东县| 东安县| 漠河县| 敦煌市| 彰化县| 赣榆县| 仁寿县| 静乐县| 五河县|