@theotherwillembotha/node-red-plugincore 0.0.53 → 0.0.55
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -8
- package/build/GenerateNodes.js +0 -1
- package/build/Nodes.html +0 -141
- package/build/Nodes.js +0 -2
- package/build/Plugins.js +2 -2
- package/build/core/NodeConstructor.d.ts +1 -0
- package/build/core/NodeConstructor.d.ts.map +1 -1
- package/build/core/NodeConstructor.js +5 -2
- package/build/core/NodeGenerator.js +9 -9
- package/build/core/logger/LoggerDecorator.d.ts.map +1 -1
- package/build/core/logger/LoggerDecorator.js +34 -38
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +11 -7
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +1 -1
- package/build/core/logger/node/ConsoleLoggerConfigNode.js +24 -9
- package/build/core/logger/node/RestLoggerConfigNode.d.ts +22 -6
- package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +1 -1
- package/build/core/logger/node/RestLoggerConfigNode.js +93 -22
- package/build/core/logger/service/LoggerService.d.ts +59 -68
- package/build/core/logger/service/LoggerService.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.js +76 -155
- package/build/core/logger/template/LoggerTemplate.d.ts +9 -1
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -1
- package/build/core/metrics/service/MetricsService.js +1 -1
- package/build/core/webhook/WebhookDecorator.d.ts.map +1 -1
- package/build/core/webhook/WebhookDecorator.js +4 -4
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts +0 -2
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -1
- package/build/core/webhook/service/ReverseProxyTypeService.js +1 -4
- package/build/core/webhook/service/WebhookServerService.d.ts +1 -1
- package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -1
- package/build/core/webhook/service/WebhookServerService.js +6 -6
- package/build/core/webhook/template/WebhookTemplate.d.ts +1 -1
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -1
- package/build/index.d.ts +1 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -2
- package/build/resources/editorLanguageExtension.js +1 -1
- package/package.json +5 -3
- package/resources/editorLanguageExtension.js +1 -1
- package/src/GenerateNodes.ts +2 -2
- package/src/core/NodeConstructor.ts +5 -1
- package/src/core/NodeGenerator.ts +2 -2
- package/src/core/logger/LoggerDecorator.ts +56 -53
- package/src/core/logger/node/ConsoleLoggerConfigNode.ts +39 -14
- package/src/core/logger/node/RestLoggerConfigNode.ts +128 -25
- package/src/core/logger/service/LoggerService.ts +103 -239
- package/src/core/logger/template/LoggerTemplate.ts +11 -1
- package/src/core/webhook/WebhookDecorator.ts +1 -3
- package/src/core/webhook/service/ReverseProxyTypeService.ts +0 -4
- package/src/core/webhook/service/WebhookServerService.ts +1 -1
- package/src/core/webhook/template/WebhookTemplate.ts +1 -1
- package/src/index.ts +2 -2
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts +0 -20
- package/build/core/logger/node/LokiLoggerConfigNode.d.ts.map +0 -1
- package/build/core/logger/node/LokiLoggerConfigNode.html +0 -117
- package/build/core/logger/node/LokiLoggerConfigNode.js +0 -52
- package/build/core/logger/service/LoggerServiceTypes.d.ts +0 -24
- package/build/core/logger/service/LoggerServiceTypes.d.ts.map +0 -1
- package/build/core/logger/service/LoggerServiceTypes.js +0 -30
- package/documentation/LokiLoggerConfigNode.png +0 -0
- package/src/core/logger/node/LokiLoggerConfigNode.html +0 -117
- package/src/core/logger/node/LokiLoggerConfigNode.ts +0 -58
- package/src/core/logger/service/LoggerServiceTypes.ts +0 -26
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseNode, NodeManager } from "../NodeConstructor";
|
|
2
|
-
import { Log,
|
|
3
|
-
import { LoggerTemplateConfig } from "./template/LoggerTemplate";
|
|
4
|
-
|
|
2
|
+
import { AbstractLogger, Log, BaseLoggerConfig, DoNothingAppender, LoggerConfigNode, LoggerConfigNodeConfig } from "./service/LoggerService";
|
|
3
|
+
import { LoggerTemplateConfig, LoggerTemplateNodeConfig } from "./template/LoggerTemplate";
|
|
5
4
|
|
|
6
5
|
export function Logger(debug?:string):Function {
|
|
7
6
|
|
|
@@ -10,41 +9,43 @@ export function Logger(debug?:string):Function {
|
|
|
10
9
|
// if the type is a string, then its probably defined in the local (core) module.
|
|
11
10
|
if(typeof propertyKey === "string"){
|
|
12
11
|
const valueSymbol = Symbol(`_${String(propertyKey)}_value`);
|
|
12
|
+
|
|
13
|
+
//console.log("BINDING:", "target", target, "propertyKey", propertyKey );
|
|
13
14
|
|
|
14
15
|
Object.defineProperty(target, propertyKey, {
|
|
15
16
|
get: function() {
|
|
17
|
+
|
|
18
|
+
//console.log("setting logger on node " + this.name() + " (localized)");
|
|
16
19
|
|
|
17
20
|
if(!this[valueSymbol]){
|
|
18
|
-
let node = this as BaseNode<LoggerTemplateConfig>;
|
|
19
|
-
//console.log("setting logger on node " + node.name() + " (localized)");
|
|
20
|
-
let config = node.config();
|
|
21
|
-
let logger;
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
let
|
|
22
|
+
try{
|
|
23
|
+
let node = this as BaseNode<LoggerTemplateNodeConfig>;
|
|
24
|
+
let config = node.config();
|
|
25
|
+
|
|
26
|
+
if(!config.logEnabled){
|
|
27
|
+
return this[valueSymbol] = DoNothingAppender.get();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// get the logger config node.
|
|
31
|
+
let loggerConfigNode:LoggerConfigNode<LoggerConfigNodeConfig, AbstractLogger<BaseLoggerConfig>> =(NodeManager.RED.nodes.getNode(config.logger) as any).node();
|
|
32
|
+
|
|
33
|
+
let loggerTemplateConfig:LoggerTemplateConfig = {
|
|
25
34
|
id:config.id,
|
|
26
35
|
flow:node.flow(),
|
|
27
36
|
type:node.type(),
|
|
28
37
|
name:node.name(),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
template:config.logTemplateOverride
|
|
38
|
+
level:loggerConfigNode.config().level,
|
|
39
|
+
template: (config.logTemplateOverrideEnabled) ? config.logTemplateOverride : loggerConfigNode.config().template,
|
|
32
40
|
};
|
|
33
|
-
|
|
41
|
+
|
|
34
42
|
// get a reference to the loggerService.
|
|
35
|
-
|
|
36
|
-
logger = (NodeManager.RED.nodes.getNode(config.logger) as any).node().registerLogger(registration) as Log;
|
|
37
|
-
}
|
|
38
|
-
catch(e){
|
|
39
|
-
console.log("failed getting logger ", config.logger, e);
|
|
40
|
-
logger = { log(){} };
|
|
41
|
-
}
|
|
43
|
+
return this[valueSymbol] = loggerConfigNode.registerTemplate(loggerTemplateConfig);
|
|
42
44
|
}
|
|
43
|
-
|
|
44
|
-
logger
|
|
45
|
+
catch(e){
|
|
46
|
+
console.log(`failed getting logger "${this?.config()?.logger}"`, e);
|
|
47
|
+
return this[valueSymbol] = DoNothingAppender.get();
|
|
45
48
|
}
|
|
46
|
-
|
|
47
|
-
this[valueSymbol] = logger;
|
|
48
49
|
}
|
|
49
50
|
return this[valueSymbol];
|
|
50
51
|
},
|
|
@@ -55,43 +56,45 @@ export function Logger(debug?:string):Function {
|
|
|
55
56
|
}
|
|
56
57
|
else{
|
|
57
58
|
let property = propertyKey as any;
|
|
58
|
-
|
|
59
|
-
property.addInitializer(function(this:BaseNode<
|
|
60
|
-
let node = this as BaseNode<
|
|
59
|
+
|
|
60
|
+
property.addInitializer(function(this:BaseNode<LoggerTemplateNodeConfig>){
|
|
61
|
+
let node = this as BaseNode<LoggerTemplateNodeConfig>
|
|
61
62
|
const valueSymbol = Symbol(`_${String(property.name)}_value`);
|
|
63
|
+
|
|
64
|
+
//console.log("ADDING INITIALIZER:", "node", node, "property.name", property.name );
|
|
65
|
+
|
|
62
66
|
Object.defineProperty(node, property.name, {
|
|
63
67
|
get: function() {
|
|
68
|
+
|
|
69
|
+
//console.log("setting logger on node " + node.name()+ " (externalized)");
|
|
64
70
|
|
|
65
71
|
if(!this[valueSymbol]){
|
|
66
|
-
|
|
72
|
+
try{
|
|
67
73
|
let config = node.config();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
let registration:LoggerRegistration = {
|
|
72
|
-
id:config.id,
|
|
73
|
-
flow:node.flow(),
|
|
74
|
-
type:node.type(),
|
|
75
|
-
name:node.name(),
|
|
76
|
-
enabled:config.logEnabled,
|
|
77
|
-
override:config.logTemplateOverrideEnabled,
|
|
78
|
-
template:config.logTemplateOverride
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
// get a reference to the loggerService.
|
|
82
|
-
try{
|
|
83
|
-
logger = (NodeManager.RED.nodes.getNode(config.logger) as any).node().registerLogger(registration) as Log;
|
|
84
|
-
}
|
|
85
|
-
catch(e){
|
|
86
|
-
console.log("failed getting logger ", config.logger, e);
|
|
87
|
-
logger = { log(){} };
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
else{
|
|
91
|
-
logger = { log(){} };
|
|
74
|
+
|
|
75
|
+
if(!config.logEnabled){
|
|
76
|
+
return this[valueSymbol] = DoNothingAppender.get();
|
|
92
77
|
}
|
|
93
78
|
|
|
94
|
-
|
|
79
|
+
// get the logger config node.
|
|
80
|
+
let loggerConfigNode:LoggerConfigNode<LoggerConfigNodeConfig, AbstractLogger<BaseLoggerConfig>> =(NodeManager.RED.nodes.getNode(config.logger) as any).node();
|
|
81
|
+
|
|
82
|
+
let loggerTemplateConfig:LoggerTemplateConfig = {
|
|
83
|
+
id:config.id,
|
|
84
|
+
flow:node.flow(),
|
|
85
|
+
type:node.type(),
|
|
86
|
+
name:node.name(),
|
|
87
|
+
level: loggerConfigNode?.config().level ?? 'info',
|
|
88
|
+
template: (config.logTemplateOverrideEnabled) ? config.logTemplateOverride : (loggerConfigNode?.config().template ?? 'message:{{msg}}'),
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// get a reference to the loggerService.
|
|
92
|
+
return this[valueSymbol] = loggerConfigNode.registerTemplate(loggerTemplateConfig);
|
|
93
|
+
}
|
|
94
|
+
catch(e){
|
|
95
|
+
console.log("failed getting logger ", e);
|
|
96
|
+
return this[valueSymbol] = DoNothingAppender.get();
|
|
97
|
+
}
|
|
95
98
|
}
|
|
96
99
|
return this[valueSymbol];
|
|
97
100
|
},
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import { Node } from "node-red";
|
|
3
|
-
import {
|
|
4
|
-
import { NewLogger, Log, LoggerRegistration, LoggerService } from "../service/LoggerService"
|
|
3
|
+
import { LoggerService, LoggerConfigNodeConfig, BaseLoggerConfig, AbstractLogger, TagMap, LoggerConfigNode, Log, Level } from "../service/LoggerService"
|
|
5
4
|
import { SourceUtility } from "../../NodeGenerator";
|
|
6
|
-
import { Level, PlatformType } from "../service/LoggerServiceTypes";
|
|
7
5
|
import { NodeDescription } from "../../tagging/NodeDescriptionDecorator";
|
|
6
|
+
import { LoggerTemplateConfig } from "../template/LoggerTemplate";
|
|
8
7
|
|
|
9
|
-
interface ConsoleLoggerConfigNodeConfig extends
|
|
10
|
-
id: string;
|
|
8
|
+
interface ConsoleLoggerConfigNodeConfig extends LoggerConfigNodeConfig {
|
|
11
9
|
level:Level;
|
|
12
10
|
template:string;
|
|
13
11
|
}
|
|
@@ -21,26 +19,53 @@ interface ConsoleLoggerConfigNodeConfig extends ConfigNodeConfig {
|
|
|
21
19
|
dependencies:[ LoggerService ],
|
|
22
20
|
tags: [ "LoggerType" ]
|
|
23
21
|
})
|
|
24
|
-
export class ConsoleLoggerConfigNode extends
|
|
22
|
+
export class ConsoleLoggerConfigNode extends LoggerConfigNode<ConsoleLoggerConfigNodeConfig, ConsoleLogger> {
|
|
25
23
|
|
|
26
|
-
private _logger!:
|
|
24
|
+
private _logger!: ConsoleLogger;
|
|
27
25
|
|
|
28
26
|
constructor(node: Node, config: ConsoleLoggerConfigNodeConfig){
|
|
29
27
|
super(node, config);
|
|
30
28
|
let _this = this;
|
|
31
29
|
|
|
32
|
-
//
|
|
33
|
-
let loggerConfig = {
|
|
30
|
+
// create logger config
|
|
31
|
+
let loggerConfig:ConsoleLoggerConfig = {
|
|
34
32
|
id:this.id(),
|
|
35
|
-
type:
|
|
36
|
-
template:config.template,
|
|
33
|
+
type:"CONSOLE",
|
|
37
34
|
level:config.level,
|
|
35
|
+
template:config.template,
|
|
38
36
|
}
|
|
39
37
|
|
|
40
|
-
|
|
38
|
+
// create logger instance:
|
|
39
|
+
this._logger = new ConsoleLogger(loggerConfig);
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
return this._logger
|
|
42
|
+
protected logger():ConsoleLogger{
|
|
43
|
+
return this._logger;
|
|
45
44
|
}
|
|
46
45
|
}
|
|
46
|
+
|
|
47
|
+
export interface ConsoleLoggerConfig extends BaseLoggerConfig {
|
|
48
|
+
// no additional values.
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
class ConsoleLogger extends AbstractLogger<ConsoleLoggerConfig> {
|
|
52
|
+
|
|
53
|
+
constructor(config:ConsoleLoggerConfig){
|
|
54
|
+
super(config);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
protected createLogger(config: LoggerTemplateConfig): Log {
|
|
58
|
+
return new ConsoleAppender(config);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
class ConsoleAppender extends Log {
|
|
63
|
+
|
|
64
|
+
constructor(config:LoggerTemplateConfig){
|
|
65
|
+
super(config);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
protected writeToLog(level:string, message: string, tags: { [key: string]: string | boolean | number; }): void {
|
|
69
|
+
console.log(new Date().toISOString(), this.config().id, level, tags, message)
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
|
|
2
2
|
import { Node } from "node-red";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import {ConfigNodeConfig } from "../../NodeConstructor"
|
|
4
|
+
import { LoggerService, LoggerConfigNode, AbstractLogger, BaseLoggerConfig, TagMap, Log } from "../service/LoggerService"
|
|
5
5
|
import { SourceUtility } from "../../NodeGenerator";
|
|
6
|
-
import { ApiKeyMechanismType, Level,
|
|
6
|
+
import { ApiKeyMechanismType, Level, RestAuthType } from "../service/LoggerService";
|
|
7
7
|
import { NodeDescription } from "../../tagging/NodeDescriptionDecorator";
|
|
8
|
+
import { LoggerTemplateConfig } from "../template/LoggerTemplate";
|
|
9
|
+
import { parseURL, URLRecord } from "whatwg-url";
|
|
10
|
+
import { HttpTransportOptions } from "winston/lib/winston/transports";
|
|
11
|
+
import { createLogger, format, transports, Logger } from "winston";
|
|
8
12
|
|
|
9
13
|
interface RestLoggerConfigNodeConfig extends ConfigNodeConfig {
|
|
10
14
|
|
|
11
15
|
id: string;
|
|
12
|
-
platform: PlatformType;
|
|
13
16
|
level:Level;
|
|
14
17
|
template:string;
|
|
15
18
|
|
|
16
19
|
rest_url: string;
|
|
20
|
+
rest_ignoresslerror:boolean;
|
|
17
21
|
rest_auth_type: RestAuthType;
|
|
18
22
|
rest_auth_basic_username:string;
|
|
19
23
|
rest_auth_basic_password:string;
|
|
@@ -31,37 +35,136 @@ interface RestLoggerConfigNodeConfig extends ConfigNodeConfig {
|
|
|
31
35
|
dependencies:[ LoggerService ],
|
|
32
36
|
tags: [ "LoggerType" ]
|
|
33
37
|
})
|
|
34
|
-
export class RestLoggerConfigNode extends
|
|
38
|
+
export class RestLoggerConfigNode extends LoggerConfigNode<RestLoggerConfigNodeConfig, RestLogger> {
|
|
35
39
|
|
|
36
|
-
private _logger!:
|
|
40
|
+
private _logger!: RestLogger;
|
|
37
41
|
|
|
38
42
|
constructor(node: Node, config: RestLoggerConfigNodeConfig){
|
|
39
43
|
super(node, config);
|
|
40
44
|
let _this = this;
|
|
41
45
|
|
|
42
46
|
// instantiate the logger.
|
|
43
|
-
let loggerConfig:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
let loggerConfig:RestLoggerConfig = {
|
|
48
|
+
id:this.id(),
|
|
49
|
+
type:"REST",
|
|
50
|
+
level:config.level,
|
|
51
|
+
template:config.template,
|
|
52
|
+
|
|
53
|
+
// additional properties.
|
|
54
|
+
url: config.rest_url,
|
|
55
|
+
ignoresslerror:config.rest_ignoresslerror,
|
|
56
|
+
auth_type: config.rest_auth_type,
|
|
57
|
+
auth_basic_username:config.rest_auth_basic_username,
|
|
58
|
+
auth_basic_password:config.rest_auth_basic_password,
|
|
59
|
+
auth_apikey_mechanism:config.rest_auth_apikey_mechanism,
|
|
60
|
+
auth_apikey_name:config.rest_auth_apikey_name,
|
|
61
|
+
auth_apikey_value:config.rest_auth_apikey_value,
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
this._logger = new RestLogger(loggerConfig);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
protected logger():RestLogger{
|
|
68
|
+
return this._logger;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
class RestLogger extends AbstractLogger<RestLoggerConfig> {
|
|
73
|
+
|
|
74
|
+
private winston:Logger;
|
|
75
|
+
|
|
76
|
+
constructor(config:RestLoggerConfig){
|
|
77
|
+
super(config);
|
|
78
|
+
|
|
79
|
+
// get the url.
|
|
80
|
+
let hosturl:URLRecord|null = parseURL(config.url);
|
|
81
|
+
if(!hosturl){
|
|
82
|
+
throw Error("could not parse url: " + config.url);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// get the options
|
|
86
|
+
let httpOptions:{[key:string]:any} = {}
|
|
87
|
+
|
|
88
|
+
// get the params.
|
|
89
|
+
let httpParams:HttpTransportOptions = {
|
|
90
|
+
host:hosturl.host?.toString(),
|
|
91
|
+
path:"/" + (hosturl.path ? [...hosturl.path].join("/") : "") + (hosturl.query ? ("?" + hosturl.query) : ""),
|
|
92
|
+
port:(hosturl.port) ? hosturl.port : undefined,
|
|
93
|
+
ssl:hosturl.scheme.toLowerCase() === "https",
|
|
94
|
+
headers: {},
|
|
95
|
+
};
|
|
96
|
+
(httpParams as any).options = httpOptions;
|
|
97
|
+
|
|
98
|
+
// add the ignore ssl error flag if need be.
|
|
99
|
+
if(config.ignoresslerror){
|
|
100
|
+
httpOptions.rejectUnauthorized = false;
|
|
59
101
|
}
|
|
60
102
|
|
|
61
|
-
|
|
103
|
+
// configure "none" authentication.
|
|
104
|
+
if(config.auth_type === RestAuthType.none){}
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
// configure "basic" authentication.
|
|
108
|
+
if(config.auth_type === RestAuthType.basic){
|
|
109
|
+
httpParams.auth = {
|
|
110
|
+
username: config.auth_basic_username,
|
|
111
|
+
password: config.auth_basic_password
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// configure "apikey" authentication.
|
|
116
|
+
if(config.auth_type === RestAuthType.apikey){
|
|
117
|
+
if(config.auth_apikey_mechanism === ApiKeyMechanismType.header) {
|
|
118
|
+
(httpParams.headers as any)[config.auth_apikey_name] = config.auth_apikey_value;
|
|
119
|
+
}
|
|
120
|
+
if(config.auth_apikey_mechanism === ApiKeyMechanismType.matrixparam) {
|
|
121
|
+
httpParams.path = httpParams.path?.replace(`:${config.auth_apikey_name}`, config.auth_apikey_value);
|
|
122
|
+
}
|
|
123
|
+
if(config.auth_apikey_mechanism === ApiKeyMechanismType.queryparam) {
|
|
124
|
+
httpParams.path = httpParams.path + (httpParams.path?.includes("?") ? "&" : "?") + config.auth_apikey_name + "=" + config.auth_apikey_value;
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
this.winston = createLogger({
|
|
129
|
+
level: config.level.toString().toLowerCase(),
|
|
130
|
+
format: format.json(),
|
|
131
|
+
defaultMeta: {},
|
|
132
|
+
transports: [
|
|
133
|
+
new transports.Http(httpParams),
|
|
134
|
+
],
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
protected createLogger(config: LoggerTemplateConfig): Log {
|
|
139
|
+
return new RestAppender(config, this.winston);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
class RestAppender extends Log {
|
|
144
|
+
private winston: Logger;
|
|
145
|
+
|
|
146
|
+
constructor(config:LoggerTemplateConfig, winston:Logger){
|
|
147
|
+
super(config);
|
|
148
|
+
this.winston = winston;
|
|
62
149
|
}
|
|
63
150
|
|
|
64
|
-
|
|
65
|
-
|
|
151
|
+
protected writeToLog(level:string, message: string, tags: { [key: string]: string | boolean | number; }): void {
|
|
152
|
+
this.winston.log({
|
|
153
|
+
level:level,
|
|
154
|
+
message:message,
|
|
155
|
+
labels:tags
|
|
156
|
+
});
|
|
66
157
|
}
|
|
158
|
+
|
|
67
159
|
}
|
|
160
|
+
|
|
161
|
+
interface RestLoggerConfig extends BaseLoggerConfig {
|
|
162
|
+
url: string;
|
|
163
|
+
ignoresslerror:boolean;
|
|
164
|
+
auth_type: RestAuthType;
|
|
165
|
+
auth_basic_username:string;
|
|
166
|
+
auth_basic_password:string;
|
|
167
|
+
auth_apikey_mechanism:ApiKeyMechanismType;
|
|
168
|
+
auth_apikey_name:string;
|
|
169
|
+
auth_apikey_value:string;
|
|
170
|
+
}
|