C# 写日志

class Log
    {        
        public static void Write(string str)
        {
            FileStream fs = null;
            string LogDir = Directory.GetCurrentDirectory() + "\\log\\";
            Directory.CreateDirectory(LogDir);
            string fileName = LogDir + DateTime.Now.ToString("yyyyMMdd") + ".txt";  
           
            //将待写的入数据从字符串转换为字节数组  
            Encoding encoder = Encoding.UTF8;
            byte[] bytes = encoder.GetBytes(DateTime.Now.ToString("hh:mm:ss") + ": " + str + Environment.NewLine);  
            try  
            {
                fs = File.OpenWrite(fileName);  
                //设定书写的開始位置为文件的末尾  
                fs.Position = fs.Length;  
                //将待写入内容追加到文件末尾  
                fs.Write(bytes, 0, bytes.Length);
                // fs.Write();
            }  
            catch (Exception ex)  
            {  
                Console.WriteLine("文件打开失败{0}", ex.ToString());  
            }  
            finally  
            {  
                fs.Close();  
            }  
        }
    }

时间: 2024-10-16 09:42:35

C# 写日志的相关文章

C# 超高速高性能写日志 代码开源

1.需求 需求很简单,就是在C#开发中高速写日志.比如在高并发,高流量的地方需要写日志.我们知道程序在操作磁盘时是比较耗时的,所以我们把日志写到磁盘上会有一定的时间耗在上面,这些并不是我们想看到的. 2.解决方案 2.1.简单原理说明 使用列队先缓存到内存,然后我们一直有个线程再从列队中写到磁盘上,这样就可以高速高性能的写日志了.因为速度慢的地方我们分离出来了,也就是说程序在把日志扔给列队后,程序的日志部分就算完成了,后面操作磁盘耗时的部分程序是不需要关心的,由另一个线程操作. 俗话说,鱼和熊掌

python 统计时间,写日志

python 统计时间使用time模块,写日志使用logging模块,这两个都是标准模板. 测试socket使用socket模块 # 统计时间 ---------------------- import time start = time.time() end = time.time() stamp = end - start print "耗时", stamp # 日志 ----------------------- import loggingimport datetime cur

利用TraceSource写日志

利用TraceSource写日志 从微软推出第一个版本的.NET Framework的时候,就在“System.Diagnostics”命名空间中提供了Debug和Trace两个类帮助我们完成针对调试和跟踪信息的日志记录.在.NET Framework 2.0中,微软引入了TraceSource并对跟踪日志系统进行了优化,优化后的跟踪日志系统在.NET Core中又经过了相应的简化..NET Core的日志模型借助TraceSourceLoggerProvider实现对TraceSource的整

NodeJS写日志_Log4js使用详解

今天和大家分享一下NodeJS中写日志的一个常用第三方包:Log4js. 跟随主流Blog特色,先简单介绍下Log4js的基本信息.介绍Log4js之前,需要先说一下Log4***,Log4***是由Apache提供的多平台下多语言下日志书写扩展包,目的很简单就是使日志书写更加方便简洁,同时对不同的业务日志能够进行灵活的分文件记录,同时也包含着详细的等级配置,为之后分级输出,检索,及程序自动解析提供更加便捷的支持(一家之言,非官方描述,领会精神).Log4***有很多语言的实现,比如Log4cp

轻轻松松教你写日志-超级简单

最近在做一个项目,涉及到很多的服务,一步步调试相当麻烦,要在自己电脑上发布很多服务,又要全部开启.很费时间,出现问题,怎么解决最快呢?直接写日志,一步定位哪里出了错. Log4Net库是一个帮助程序员将日志信息输出到各种目标(控制台.文件 数据库等)的工具. Log4Net,相信哪个程序员都用过,但是可能是人家配置好了自己拿过来直接用,所以让自己写还是有点困难,听起来很高大上的样子,其实真的很简单.以前听别人讲,迷迷糊糊,知道那么回事,就是个写日志的.但是真正会用还是在项目中自己真正的实践. 下

C#多线程写日志

由于程序是3层架构的,所有多线程记录日志成了比较棘手的问题,以前还真就没有在意过写日志的问题,认为不过是写文件罢了~~!如今发现原来要实现文件共享,并且能够使多线程同时操作日志还不能相互冲突,真的很麻烦.当然要实现它我首先想到的是在网上搜,结果可能是我搜的不得其法,没发现结果,多数都是用lock,mutx等线程锁或互斥的方式写日志,偶想这样和单线程有啥区别吗?还是没能起到多线程应该有的效率! 后来问朋友,发现个log4net的东西,不过此物依然用到了线程互斥,看了源码发现的! 网络不行,朋友不知

多线程下写日志

鄙人最近遇到了一个奇特的线上事故,记录一下,以备记忆. 鄙人所在的部门负责给公司提供各种基础库,即基础架构部门.最近某别的部门用本部门提供的支持多线程版本的日志库后,出现这样一个奇特的现象:当磁盘被日志写满以后,他们的数据文件的头部被写上了最新的日志!就是说,别的部门的程序的数据文件被日志数据给污染了. 这里先不介绍这个事故的原因.先说下这个日志库的写日志过程,其流程大致如下: step1  如果log的fd为-1,就重新通过C函数open再打开一个log_fd: step2  写log内容,即

写日志函数和持续优化

首先看下面的函数 <span style="font-size:18px;">void writelog(char* file, char* msg) { FILE*fp=NULL; int nDataLen = strlen(msg); fp=fopen(file,"ab+");//只供读取 if(fp!=NULL) { fwrite(msg, nDataLen, 1, fp); } fclose(fp);//关闭文件 }</span> 这

简单的分级别写日志程序

/************************************************************************/  /*   * 文件名称:write_log.cpp   * 摘    要:此文件实现了普通WINDOWS程序中的日志功能   *           主要有以下特点:   *           1. 根据日期创建日志文件目录,每天的日志分别存放在不同的日志目录中:   *           2. 日志内容分三种类型,根据不同需要,写不同的日志

使用log4net写日志

1.首先去下载log4net.dll,在项目中引用. 2.添加log4net.config配置文件(文件名可以自己取,但是一定要为配置文件类型),在配置文件中配置相关的配置. 3.在项目全局文件Global.asax中添加监控log4net配置. protected void Application_Start() { log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("log4net.con