2014-05-21 76 views
0

我使用MongoDB的TTL + log4mongo

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

存儲日誌與log4mongo,但我無法使用時間戳字段的TTL操作。

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

應該不是這可能嗎?如果不是,我該怎麼辦?

P.S.時間戳不是一個索引字段(在此之前,ensureIndex調用)

+0

你是從收到錯誤消息回ensureindex()調用?如果有,請將它添加到您的問題。另外,你可以添加一個來自日誌集合的示例文檔(也許運行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

佈局確實是生產線,用於ensureIndex()時間戳正確的方法是

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