2013-05-15 2 views
0

웹 응용 프로그램을 만들고 Log4Mongo를 사용하여 Mongo 데이터베이스의 "로그"컬렉션에 앱 로그를 저장합니다. ObjectId가 ("51921692a777da8788faa22c") "타임 스탬프"여기 'timestamp'요소가 클래스의 필드 또는 속성과 일치하지 않습니다. (Log4Mongo 역 직렬화)

<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> 

{ "_id"추천

JSON 형식의 Web.config에서 MongoDBAppender이고 : ISODate ("2013-05-14T10 : 48 : 50.018Z"), "레벨": "ERROR", "thread": "100", "로거": "클래스의 유형", "메시지": "여기에 몇 가지 정보" }

나는 내가 얻을,

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 객체로 로그를 역 직렬화 할 때 오류가 발생하지만 확실하지 않습니다. 어떤 도움이나 조언을 많이 주시면 감사하겠습니다!

요소 '타임 스탬프'


간단한 해상도가 JSON 형식으로되어 같은에 LogEntry 클래스의 모든 속성을 수정하는 것입니다 (제거 클래스의 필드 또는 속성과 일치하지 않습니다 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; } 
0 선도

}

답변

0

이 왜 단지

<name value="timestamp" /> 

<name value="TimeStamp" /> 

변경되지 않습니다?

+0

를 사용하면 작동하지 않습니다. 는 코드 규칙을 준수하지 않으므로 사용하지 않으려합니다. 그게 이상하고 왜 내가 이것을 올렸지. –

+0

그렇다면 문제를 잘 이해하지 못합니다. GitHub 문제에 대해 더 자세히 논의하는 것이 더 좋습니다. https://github.com/log4mongo/log4mongo-net/issues/new –