【发布时间】:2013-05-15 04:18:15
【问题描述】:
我正在构建一个 Web 应用程序并使用 Log4Mongo 将应用程序日志存储到 Mongo 数据库中的“Logs”集合中。
这是 web.config 中的 MongoDBAppender
<appender name="MongoDBAppender" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<connectionString value="mongodb://localhost/insurancegrader?safe=true" />
<collectionName value="Logs" />
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
</appender>
这样的JSON格式
{ "_id" : ObjectId("51921692a777da8788faa22c"), “时间戳”:ISODate(“2013-05-14T10:48:50.018Z”), “级别”:“错误”, “线程”:“100”, "logger" : "类的类型", “消息”:“这里有一些信息” }
我建了一个类来存储反序列化后的对象
public class LogEntry
{
public ObjectId Id { get; set; }
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
[JsonProperty("timestamp")]
public DateTime TimeStamp { get; set; }
[JsonProperty("level")]
public string Level { get; set; }
[JsonProperty("logger")]
public string Logger { get; set; }
[JsonProperty("message")]
public string Message { get; set; }
}
但是,将日志 JSON 反序列化为 LogEntry 对象时出现错误,但不确定原因。非常感谢任何帮助或建议!
元素“时间戳”与类的任何字段或属性都不匹配
简单的解决方法是将 LogEntry 类的所有属性更正为与 JSON 格式相同(删除 JsonProperty(...),但会导致约定代码问题)
公共类 LogEntry {
public ObjectId Id { get; set; }
public DateTime timestamp{ get; set; }
public string level{ get; set; }
public string logger{ get; set; }
public string message{ get; set; }
}
【问题讨论】:
标签: mongodb