[英]Kibana Not Showing Logs Sent to Elasticsearch From Node.js Winston Logger
[英]cappedMax not working in winston-mongodb logger in Node.js on Ubuntu
我已經使用 winston 模塊在 Node.js 中創建了一個記錄器,並通過要求帶有以下選項的 winston-mongodb 模塊添加了 MongoDB 傳輸:
{
db: config.db[k.DB_ENV.AUTHOR],
username: config.dbUser,
password: config.dbPassword,
collection: 'log-aggregation',
storeHost: true,
capped: true,
cappedMax: 10 // documents
}
我希望記錄器為每 10 個文檔創建一個新集合。 但記錄器繼續登錄同一個集合。 我評論了collection: 'log-aggregation'
行以檢查選項是否真的有效,然后它開始記錄到默認的'log'
集合。
那么我的錯誤在哪里? cappedMax
選項是否有最小文檔大小cappedMax
? 我嘗試使用cappedSize
選項也有 10 到 1000 個值,但仍然沒有創建新的集合。
我想知道 ippedSize 和 ippedMax 選項的最小和最大允許值?
我還想知道創建的新集合的名稱是什么?
這是我用來獲取多個日志的方法:
var winston = require('winston');
require('winston-mongodb').MongoDB;
winston.loggers.add('userLog',{
transports : [
new(winston.transports.MongoDB)({
db : 'mongodb://username:password.mongolab.com:5555/log_db',
collection : 'userLog',
capped : true
}),
]
});
winston.loggers.add('profileLog',{
transports : [
new(winston.transports.MongoDB)({
db : 'mongodb://username:password.mongolab.com:5555/log_db', collection : 'profileLog',
capped : true
}),
]
});
它工作正常,沒有可觀察到的延遲。
附注:您可以在capped:true
之后或之前添加所需的所有選項capped:true
玩得開心!
所以只是為了確認 winston-mongodb 的“上限”功能是:
capped: // true or false
cappedMax: // [int] number of documents per collection
cappedSize: // [byte-size] Size of documents capped per collection in bytes
正在工作,但重要的是要注意,為了使其工作,您不能使用這些屬性修改現有集合。 假設您是從頭開始。 例如,如果您已經創建了您的收藏,現在希望為其添加上限功能,那么這將行不通!
您需要將數據庫中的集合完全轉儲並從頭開始,或者只是創建一個新集合。
例如,這是從我的傳輸數組中提取的代碼。
new transports.MongoDB({
level: 'error',
db: process.env.MONGO_CONNECTION_LOG_STRING,
options: { useUnifiedTopology: true },
format: combine(timestamp(), json()),
collection: 'prod_log',
capped: true,
cappedMax: 2
})
所以目前我確定這個集合在我的數據庫中不存在,這個配置只會允許在任何時候將 2 個文檔存儲在我的集合中,並且任何未來的錯誤都會覆蓋任何現有的錯誤,所以你只會具有集合中的最后兩個“錯誤”日志/文檔。
玩了一段時間,我希望它有所幫助。
我有同樣的問題,但我通過簡單地更新 winston-mongodb 版本 npm i winston-mongodb 來解決它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.