Compare commits

...

6 Commits

Author SHA1 Message Date
a604b8e375 2.0.27 2020-06-08 20:39:43 +00:00
2cc3e6c906 fix(core): update 2020-06-08 20:39:40 +00:00
5a475260dd 2.0.26 2020-06-08 18:51:12 +00:00
9c79a26d04 fix(core): update 2020-06-08 18:51:11 +00:00
3fbd87cab1 2.0.25 2020-06-08 16:16:55 +00:00
5fe5c1d315 fix(core): update 2020-06-08 16:16:54 +00:00
7 changed files with 216 additions and 464 deletions

568
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartlog", "name": "@pushrocks/smartlog",
"version": "2.0.24", "version": "2.0.27",
"private": false, "private": false,
"description": "minimalistic distributed and extensible logging tool", "description": "minimalistic distributed and extensible logging tool",
"keywords": [ "keywords": [
@ -17,7 +17,7 @@
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"test": "(tstest test/)", "test": "(tstest test/)",
"build": "(tsbuild --web)", "build": "(tsbuild --web && tsbundle npm)",
"format": "(gitzone format)" "format": "(gitzone format)"
}, },
"devDependencies": { "devDependencies": {
@ -30,8 +30,9 @@
"tslint-config-prettier": "^1.18.0" "tslint-config-prettier": "^1.18.0"
}, },
"dependencies": { "dependencies": {
"@gitzone/tsbundle": "^1.0.69",
"@pushrocks/isounique": "^1.0.4", "@pushrocks/isounique": "^1.0.4",
"@pushrocks/smartlog-interfaces": "^2.0.15" "@pushrocks/smartlog-interfaces": "^2.0.18"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

View File

@ -1,24 +1,43 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as smartlog from '../ts/index'; import * as smartlog from '../ts/index';
let defaultLogger: smartlog.Smartlog; let testConsoleLog: smartlog.ConsoleLog;
let testSmartLog: smartlog.Smartlog;
tap.test('should produce a valid ConsoleLog instance', async () => {
testConsoleLog = new smartlog.ConsoleLog();
testConsoleLog.log('ok', 'this is ok');
})
tap.test('should produce instance of Smartlog', async () => { tap.test('should produce instance of Smartlog', async () => {
defaultLogger = smartlog.defaultLogger; testSmartLog = new smartlog.Smartlog({
expect(defaultLogger).to.be.instanceOf(smartlog.Smartlog); logContext: {
environment: 'test',
runtime: 'node',
zone: 'gitzone',
company: 'Lossless GmbH',
companyunit: 'Lossless Cloud',
containerName: 'testing'
}
});
}); });
tap.test('should enable console logging', async () => { tap.test('should enable console logging', async () => {
defaultLogger.enableConsole({ testSmartLog.enableConsole({
captureAll: true captureAll: true
}); });
console.log('this is a normal log that should be captured'); console.log('this is a normal log that should be captured');
console.log(new Error('hi there')); console.log(new Error('hi there'));
defaultLogger.log('info', 'this should only be printed once'); testSmartLog.log('info', 'this should only be printed once');
}); });
tap.test('should be able to log things', async () => { tap.test('should be able to log things', async () => {
defaultLogger.log('silly', 'hi'); testSmartLog.log('silly', 'hi');
}); });
tap.test('should create a log group', async () => {
const logGroup = testSmartLog.createLogGroup('some cool transaction');
logGroup.log('info', 'this is logged from a log group');
})
tap.start(); tap.start();

View File

@ -1,16 +1,6 @@
import * as plugins from './smartlog.plugins'; import * as plugins from './smartlog.plugins';
import { ConsoleLog } from './smartlog.classes.consolelog';
import { LogGroup } from './smartlog.classes.loggroup';
import { Smartlog } from './smartlog.classes.smartlog'; import { Smartlog } from './smartlog.classes.smartlog';
const defaultLogger: Smartlog = new Smartlog({
logContext: {
company: 'undefined',
companyunit: 'undefefined',
containerName: 'undefined',
environment: 'local',
runtime: 'node',
zone: 'undefined'
}
});
defaultLogger.enableConsole(); export { ConsoleLog, LogGroup, Smartlog };
export { Smartlog, defaultLogger };

View File

@ -0,0 +1,10 @@
import * as plugins from './smartlog.plugins';
/**
* a console log optimized for smartlog
*/
export class ConsoleLog {
public log(logLevelArg: plugins.smartlogInterfaces.TLogLevel, logMessageArg: string) {
console.log(`__# ${logLevelArg}: ${logMessageArg}`);
}
}

View File

@ -0,0 +1,24 @@
import * as plugins from './smartlog.plugins';
import { Smartlog } from './smartlog.classes.smartlog';
export class LogGroup {
public smartlogRef: Smartlog;
public transactionId: string;
public groupId = plugins.isounique.uni();
constructor(smartlogInstance: Smartlog, transactionIdArg: string) {
this.smartlogRef = smartlogInstance;
this.transactionId = transactionIdArg;
}
public log(logLevelArg: plugins.smartlogInterfaces.TLogLevel, logMessageArg: string, logDataArg?: any) {
this.smartlogRef.log(logLevelArg, logMessageArg, logDataArg, {
id: plugins.isounique.uni(),
type: 'none',
group: this.groupId,
instance: this.smartlogRef.uniInstanceId,
transaction: this.transactionId
});
}
}

View File

@ -1,6 +1,7 @@
import * as plugins from './smartlog.plugins'; import * as plugins from './smartlog.plugins';
import { LogRouter } from './smartlog.classes.logrouter'; import { LogRouter } from './smartlog.classes.logrouter';
import { LogGroup } from '.';
export interface ISmartlogContructorOptions { export interface ISmartlogContructorOptions {
logContext: plugins.smartlogInterfaces.ILogContext; logContext: plugins.smartlogInterfaces.ILogContext;
@ -11,6 +12,8 @@ export class Smartlog implements plugins.smartlogInterfaces.ILogDestination {
private logContext: plugins.smartlogInterfaces.ILogContext; private logContext: plugins.smartlogInterfaces.ILogContext;
private minimumLogLevel: plugins.smartlogInterfaces.TLogLevel; private minimumLogLevel: plugins.smartlogInterfaces.TLogLevel;
public uniInstanceId: string = plugins.isounique.uni();
private consoleEnabled: boolean; private consoleEnabled: boolean;
private logRouter = new LogRouter(); private logRouter = new LogRouter();
@ -32,7 +35,7 @@ export class Smartlog implements plugins.smartlogInterfaces.ILogDestination {
* enables console logging * enables console logging
*/ */
public enableConsole(optionsArg?: { captureAll: boolean }) { public enableConsole(optionsArg?: { captureAll: boolean }) {
if (optionsArg && optionsArg.captureAll) { if (process && optionsArg && optionsArg.captureAll) {
const write = process.stdout.write; const write = process.stdout.write;
/* import * as fs from 'fs'; /* import * as fs from 'fs';
const fileStream = fs.createWriteStream(plugins.path.join(paths.nogitDir, 'output.txt'), { const fileStream = fs.createWriteStream(plugins.path.join(paths.nogitDir, 'output.txt'), {
@ -65,14 +68,21 @@ export class Smartlog implements plugins.smartlogInterfaces.ILogDestination {
logLevelArg: plugins.smartlogInterfaces.TLogLevel, logLevelArg: plugins.smartlogInterfaces.TLogLevel,
logMessageArg: string, logMessageArg: string,
logDataArg?: any, logDataArg?: any,
correlationArg: plugins.smartlogInterfaces.ILogCorrelation = { correlationArg?: plugins.smartlogInterfaces.ILogCorrelation
id: plugins.isounique.uni(),
type: 'none'
}
) { ) {
correlationArg = {
...{
id: plugins.isounique.uni(),
type: 'none',
instance: this.uniInstanceId
},
...correlationArg
};
if (this.consoleEnabled) { if (this.consoleEnabled) {
this.safeConsoleLog(`${logLevelArg}: ${logMessageArg}`); this.safeConsoleLog(`${logLevelArg}: ${logMessageArg}`);
} }
const logPackage: plugins.smartlogInterfaces.ILogPackage = { const logPackage: plugins.smartlogInterfaces.ILogPackage = {
timestamp: Date.now(), timestamp: Date.now(),
type: 'log', type: 'log',
@ -118,4 +128,8 @@ export class Smartlog implements plugins.smartlogInterfaces.ILogDestination {
`LOG => ${new Date().getHours()}:${new Date().getMinutes()}:${new Date().getSeconds()} => ${logLine}` `LOG => ${new Date().getHours()}:${new Date().getMinutes()}:${new Date().getSeconds()} => ${logLine}`
); );
} }
public createLogGroup(transactionId: string = 'none') {
return new LogGroup(this, transactionId);
}
} }