2014-05-21 2 views
0

나는 log4mongo와 로그를 저장하는 MongoDB를의 TTL + log4mongo

<field> 
    <name value="timestamp" /> 
    <layout type="log4net.Layout.PatternLayout" value="%date" /> 
    </field> 

을 사용하고 있습니다,하지만 난 TTL 작업에 그 타임 스탬프 필드를 사용할 수 없습니다입니다.

db.logs.ensureIndex({ "timestamp": 1 }, { expireAfterSeconds: 3600 }) 

이렇게하면 안됩니까? 그렇지 않다면 어떻게해야합니까?

P. 타임 스탬프 (즉 ensureIndex 호출하기 전에) 인덱스 필드 ensureIndex()에 대한 타임 스탬프를 사용하는

+0

당신이에서 다시 에러 메시지를 받고있다되지 않습니다 ensureindex() 호출? 그렇다면 pls 귀하의 질문에 그것을 추가하십시오. 또한 로그 컬렉션 (예 : db.logs.findOne())에서 예제 문서를 추가 할 수 있습니까? –

+1

타임 스탬프가 MongoDB 컬렉션의 기본 Date 유형이 아닐 수 있습니다. 레이아웃이 실제로 문자열을 생성하고있을 가능성이 있습니다. [테스트 케이스] (https://github.com/log4mongo/log4mongo-net/blob/master/src/Log4Mongo.Tests/MongoDBAppenderTest.cs#L39-L42)의 구성을 참조하십시오. –

+0

요청을 제출했습니다. (https://github.com/log4mongo/log4mongo-net/pull/29) TTL 색인을 활성화하십시오. – seanfitzg

답변

0

배치는 참으로 문자열을 생산하고, 올바른 방법

<field> 
    <name value='timestamp' /> 
    <layout type='log4net.Layout.RawTimeStampLayout' /> 
</field>