我已经序列化了以下日志类:
[Serializable]
[XmlRoot("Log")]
public class Log
{
[XmlElement("ErrorLog")]
public ErrorLog Error { get; set; }
[XmlElement("MessageLog")]
public MessageLog Message { get; set; }
}
public class ErrorLog
{
[XmlElement("ErrorMessage")]
public string ErrorMessage { get; set; }
[XmlElement("Module")]
public string Module { get; set; }
[XmlElement("Component")]
public string Component { get; set; }
}
public class MessageLog
{
[XmlElement("Message")]
public string Message { get; set; }
[XmlElement("Module")]
public string Module { get; set; }
}
我将XML文件中的上述Log类序列化为:
ABC TestClient的
ABC TestClient的 DataAccessLayer
是否有可能在单个根目录中添加所有元素,无论它们是ErrorLogs还是MessageLogs,如: ABC TestClient的 DataAccessLayer ABC TestClient的
答案 0 :(得分:1)
您可以创建BaseLog
课程并在List<BaseLog>
内声明Log
。 MesageLog
和ErrorLog
应继承自BaseLog
顺便说一下,如果XmlElement与属性名称具有相同的值,则不需要将XmlElement
属性应用于属性。请为记录器投入一些时间,例如log4net
我认为将日志保留为XML不是最佳做法(而是使用纯文本文件)。由于应用程序每秒都会崩溃,因此几乎每次出现新消息时都应该刷新日志文件。使用普通文件很容易(当你在最后的文件之后写字节时)和使用xml很难,因为你必须在结束标记之前写。