• .net 自带的日志功能 System.IO.Log (写入)


    在.net 4.0中 framework自带了一组写日志的类,都位于System.IO.Log 命名空间下

    其中LogRecordSequence 提供了对公用日志文件系统 (CLFS) 日志的实现(xp不支持...)

    FileRecordSequence提供了对普通日志文件的支持

     

    代码
    string logName = "aaa.txt";
    string logContainer = "MyExtent1";
    int containerSize = 1024 * 1024;
    LogRecordSequence sequence
    = new LogRecordSequence(logName,
    FileMode.CreateNew,
    FileAccess.ReadWrite,
    FileShare.None);
    sequence.LogStore.Extents.Add(logContainer, containerSize);

    //准备写日志
    string str = "日志内容";
    Encoding enc
    = Encoding.Unicode;
    byte[] array = enc.GetBytes(str);
    ArraySegment
    <byte>[] segments = new ArraySegment<byte>[1];
    segments[
    0] = new ArraySegment<byte>(array);
    var list
    = Array.AsReadOnly<ArraySegment<byte>>(segments);

    //这句话就是写日志了
    sequence.Append(list, SequenceNumber.Invalid, SequenceNumber.Invalid, RecordAppendOptions.ForceFlush);

    Console.ReadLine();
    return;

      

    LogRecordSequence 的性能非常好,

    注:在我的机器上(windows 2008) 测试写入10000条耗时0.03秒 .(不要每写一条都Flush : 设置参数 RecordAppendOptions.None)

     

    PS: 可以将 RetryAppend 设置为true 开启功能: 文件满的时候,自动生成另一个文件写入(如果不设置 就会抛出日志已满的异常)

    PS: 不支持自动时间格式的文件名,很郁闷

  • 相关阅读:
    proxySql 报错connection is locked to hostgroup 100 but trying to reach hostgroup 200 解决办法
    构建harbor私有仓库
    Kubernetes Secret
    Kubernetes conifgMap
    kubernetes Ingress详解
    Kubernetes Service 详解
    RC、RS与Deployment的创建
    Pod的生命周期
    kubeadm安装Kubernetes单节点master集群
    App 需要的费用说明
  • 原文地址:https://www.cnblogs.com/PurpleTide/p/1937416.html
Copyright © 2020-2023  润新知