Merge pull request #124 from vatesfr/abhamonr-logs-avoid-sublevel

avoid sublevel for logs
This commit is contained in:
Julien Fontanet 2015-11-13 11:08:44 +01:00
commit 2972fc5814
4 changed files with 17 additions and 5 deletions

View File

@ -51,6 +51,7 @@
"got": "^5.0.0",
"graceful-fs": "^4.1.2",
"hashy": "~0.4.2",
"highland": "^2.5.1",
"http-server-plus": "^0.5.1",
"human-format": "^0.5.0",
"is-my-json-valid": "^2.12.2",

View File

@ -1,3 +1,5 @@
import highland from 'highland'
// See: https://en.wikipedia.org/wiki/Syslog#Severity_level
const LEVELS = [
'emergency',
@ -21,8 +23,9 @@ function generateUniqueKey (date) {
}
export default class LevelDbLogger {
constructor (db) {
constructor (db, namespace) {
this._db = db
this._namespace = namespace
}
_add (level, message, data) {
@ -30,6 +33,7 @@ export default class LevelDbLogger {
level,
message,
data,
namespace: this._namespace,
time: Date.now()
}
@ -39,7 +43,8 @@ export default class LevelDbLogger {
}
createReadStream () {
return this._db.createReadStream()
return highland(this._db.createReadStream())
.filter(({value}) => value.namespace === this._namespace)
}
}

View File

@ -14,6 +14,10 @@ export default {
type: 'string',
description: 'human readable (short) description of this log'
},
namespace: {
type: 'string',
description: 'space to store logs'
},
data: {
oneOf: [
{ '$ref': 'log/jobStart.js' },
@ -26,6 +30,7 @@ export default {
required: [
'id',
'time',
'message'
'message',
'namespace'
]
}

View File

@ -236,9 +236,10 @@ export default class Xo extends EventEmitter {
// -----------------------------------------------------------------
getLogger (identifier) {
getLogger (namespace) {
return new LevelDbLogger(
this._leveldb.sublevel('logs').sublevel(identifier)
this._leveldb.sublevel('logs'),
namespace
)
}