avoid sublevel for logs

This commit is contained in:
wescoeur 2015-11-13 10:55:56 +01:00
parent c30c1848bc
commit 975c96217c
4 changed files with 17 additions and 5 deletions

View File

@ -51,6 +51,7 @@
"got": "^5.0.0", "got": "^5.0.0",
"graceful-fs": "^4.1.2", "graceful-fs": "^4.1.2",
"hashy": "~0.4.2", "hashy": "~0.4.2",
"highland": "^2.5.1",
"http-server-plus": "^0.5.1", "http-server-plus": "^0.5.1",
"human-format": "^0.5.0", "human-format": "^0.5.0",
"is-my-json-valid": "^2.12.2", "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 // See: https://en.wikipedia.org/wiki/Syslog#Severity_level
const LEVELS = [ const LEVELS = [
'emergency', 'emergency',
@ -21,8 +23,9 @@ function generateUniqueKey (date) {
} }
export default class LevelDbLogger { export default class LevelDbLogger {
constructor (db) { constructor (db, namespace) {
this._db = db this._db = db
this._namespace = namespace
} }
_add (level, message, data) { _add (level, message, data) {
@ -30,6 +33,7 @@ export default class LevelDbLogger {
level, level,
message, message,
data, data,
namespace: this._namespace,
time: Date.now() time: Date.now()
} }
@ -39,7 +43,8 @@ export default class LevelDbLogger {
} }
createReadStream () { 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', type: 'string',
description: 'human readable (short) description of this log' description: 'human readable (short) description of this log'
}, },
namespace: {
type: 'string',
description: 'space to store logs'
},
data: { data: {
oneOf: [ oneOf: [
{ '$ref': 'log/jobStart.js' }, { '$ref': 'log/jobStart.js' },
@ -26,6 +30,7 @@ export default {
required: [ required: [
'id', 'id',
'time', 'time',
'message' 'message',
'namespace'
] ]
} }

View File

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