如何写Log

在项目里经常会遇到要写log的这种问题,log可以帮着记录程序在运行过程中的信息和可能出现的异常信息。在我所写的log服务里面,有时候是输入字符串,有的时候是需要写入对象列表。

记录字符串log信息,写入txt文本文件,代码如下:

public void LogToFile(string logText, string fileName)

{

using (StreamWriter w = File.AppendText(fileName))

{

w.WriteLine(logText);

}

using (StreamReader r=File.OpenText(fileName))

{

string line;

while ((line = r.ReadLine()) != null)

{

Console.WriteLine(line);

}

}

}

记录对象列表log,写入txt文本文件,代码如下:(但在运行完成之后会发现log文件会出现乱码)

public void SaveLog(List cases, string fileName)

{

var serializer = new BinaryFormatter();

using (var stream = File.OpenWrite(fileName))

{

serializer.Serialize(stream, cases);

}

}

public void ReadLog(string fileName)

{

var serializer = new BinaryFormatter();

using (var stream = File.OpenRead(fileName))

{

if (stream != null && stream.Length != 0)

{

stream.Position = 0;

var cases = (List)serializer.Deserialize(stream);

}

}

}

记录对象列表log,写入xml文件,代码如下:

public void SerializeObject(List serializableObject, string fileName)

{

if (serializableObject == null) { return; }

try

{

XmlDocument xmlDocument = new XmlDocument();

XmlSerializer serializer = new XmlSerializer(serializableObject.GetType());

using (MemoryStream stream = new MemoryStream())

{

serializer.Serialize(stream, serializableObject);

stream.Position = 0;

xmlDocument.Load(stream);

xmlDocument.Save(fileName);

stream.Close();

}

}

catch (Exception ex)

{

//Log exception here

}

}

public List DeSerializeObject(string fileName)

{

if (string.IsNullOrEmpty(fileName)) { return default(List);

try

{

XmlDocument xmlDocument = new XmlDocument();

xmlDocument.Load(fileName);

string xmlString = xmlDocument.OuterXml;

using (StringReader read = new StringReader(xmlString))

{

System.Type outType = typeof(List);

XmlSerializer serializer = new XmlSerializer(outType);

using (XmlReader reader = new XmlTextReader(read))

{

objectOut = (List)serializer.Deserialize(reader);

reader.Close();

}

read.Close();

}

}

catch (Exception ex)

{

//Log exception here

}

return objectOut;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,551评论 0 17
  • 2017年8月15日 星期二 晴 文/夏日晓兮 夜,微凉!他孤身一人坐在江边。 江,已恢复了以往的宁静。那天下...
    夏日晓兮阅读 902评论 39 18