@wdio/logger 5.6.4 → 5.9.0

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/build/node.js CHANGED
@@ -19,7 +19,7 @@ var _stripAnsi = _interopRequireDefault(require("strip-ansi"));
19
19
 
20
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
21
 
22
- const DEFAULT_LEVEL = 0;
22
+ const DEFAULT_LEVEL = 'trace';
23
23
  const COLORS = {
24
24
  error: 'red',
25
25
  warn: 'yellow',
@@ -27,6 +27,11 @@ const COLORS = {
27
27
  debug: 'green',
28
28
  trace: 'cyan'
29
29
  };
30
+ const matches = {
31
+ COMMAND: 'COMMAND',
32
+ DATA: 'DATA',
33
+ RESULT: 'RESULT'
34
+ };
30
35
  const SERIALIZERS = [{
31
36
  /**
32
37
  * display error stack
@@ -37,19 +42,19 @@ const SERIALIZERS = [{
37
42
  /**
38
43
  * color commands blue
39
44
  */
40
- matches: log => log === 'COMMAND',
45
+ matches: log => log === matches.COMMAND,
41
46
  serialize: log => _chalk.default.magenta(log)
42
47
  }, {
43
48
  /**
44
49
  * color data yellow
45
50
  */
46
- matches: log => log === 'DATA',
51
+ matches: log => log === matches.DATA,
47
52
  serialize: log => _chalk.default.yellow(log)
48
53
  }, {
49
54
  /**
50
55
  * color result cyan
51
56
  */
52
- matches: log => log === 'RESULT',
57
+ matches: log => log === matches.RESULT,
53
58
  serialize: log => _chalk.default.cyan(log)
54
59
  }];
55
60
  const loggers = {};
@@ -67,6 +72,18 @@ _loglevel.default.methodFactory = function (methodName, logLevel, loggerName) {
67
72
  if (!logFile && process.env.WDIO_LOG_PATH) {
68
73
  logFile = _fs.default.createWriteStream(process.env.WDIO_LOG_PATH);
69
74
  }
75
+ /**
76
+ * split `prefixer: value` sting to `prefixer: ` and `value`
77
+ * so that SERIALIZERS can match certain string
78
+ */
79
+
80
+
81
+ const match = Object.values(matches).filter(x => args[0].endsWith(`: ${x}`))[0];
82
+
83
+ if (match) {
84
+ const prefixStr = args.shift().slice(0, -match.length - 1);
85
+ args.unshift(prefixStr, match);
86
+ }
70
87
 
71
88
  args = args.map(arg => {
72
89
  for (const s of SERIALIZERS) {
@@ -79,7 +96,7 @@ _loglevel.default.methodFactory = function (methodName, logLevel, loggerName) {
79
96
  });
80
97
  const logText = (0, _stripAnsi.default)(`${_util.default.format.apply(this, args)}\n`);
81
98
 
82
- if (logFile) {
99
+ if (logFile && logFile.writable) {
83
100
  /**
84
101
  * empty logging cache if stuff got logged before
85
102
  */
@@ -122,18 +139,54 @@ function getLogger(name) {
122
139
  loggers[name].setLevel(logLevel);
123
140
  return loggers[name];
124
141
  }
142
+ /**
143
+ * Wait for writable stream to be flushed.
144
+ * Calling this prevents part of the logs in the very env to be lost.
145
+ */
146
+
147
+
148
+ getLogger.waitForBuffer = async () => new Promise(resolve => {
149
+ if (logFile && Array.isArray(logFile.writableBuffer) && logFile.writableBuffer.length !== 0) {
150
+ return setTimeout(async () => {
151
+ await getLogger.waitForBuffer(resolve);
152
+ resolve();
153
+ }, 20);
154
+ }
155
+
156
+ resolve(true);
157
+ });
125
158
 
126
159
  getLogger.setLevel = (name, level) => loggers[name].setLevel(level);
127
160
 
128
- getLogger.setLogLevelsConfig = (logLevels = {}) => {
161
+ getLogger.setLogLevelsConfig = (logLevels = {}, wdioLogLevel = DEFAULT_LEVEL) => {
162
+ /**
163
+ * set log level
164
+ */
165
+ if (process.env.WDIO_LOG_LEVEL === undefined) {
166
+ process.env.WDIO_LOG_LEVEL = wdioLogLevel;
167
+ }
168
+
129
169
  logLevelsConfig = {};
130
- Object.keys(logLevels).forEach(loggerName => {
131
- const logLevelName = getLogLevelName(loggerName);
132
- logLevelsConfig[logLevelName] = logLevels[loggerName];
170
+ /**
171
+ * build logLevelsConfig object
172
+ */
133
173
 
134
- if (loggers[loggerName]) {
135
- loggers[loggerName].setLevel(logLevelsConfig[logLevelName]);
136
- }
174
+ Object.entries(logLevels).forEach(([logName, logLevel]) => {
175
+ const logLevelName = getLogLevelName(logName);
176
+ logLevelsConfig[logLevelName] = logLevel;
177
+ });
178
+ /**
179
+ * set log level for each logger
180
+ */
181
+
182
+ Object.keys(loggers).forEach(logName => {
183
+ const logLevelName = getLogLevelName(logName);
184
+ /**
185
+ * either apply log level from logLevels object or use global logLevel
186
+ */
187
+
188
+ const logLevel = typeof logLevelsConfig[logLevelName] !== 'undefined' ? logLevelsConfig[logLevelName] : process.env.WDIO_LOG_LEVEL;
189
+ loggers[logName].setLevel(logLevel);
137
190
  });
138
191
  };
139
192
 
package/build/web.js CHANGED
@@ -22,4 +22,6 @@ function getLogger(component) {
22
22
 
23
23
  getLogger.setLevel = () => {};
24
24
 
25
- getLogger.setLogLevelsConfig = () => {};
25
+ getLogger.setLogLevelsConfig = () => {};
26
+
27
+ getLogger.waitForBuffer = () => {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wdio/logger",
3
- "version": "5.6.4",
3
+ "version": "5.9.0",
4
4
  "description": "A helper utility for logging of WebdriverIO packages",
5
5
  "author": "Christian Bromann <christian@saucelabs.com>",
6
6
  "homepage": "https://github.com/webdriverio/webdriverio/tree/master/packages/wdio-logger",
@@ -38,5 +38,5 @@
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "09f998f9e785873378b4436fd39c4dc37aa6e248"
41
+ "gitHead": "6339dc411df997530375eda47b8a4b735bcd6c2c"
42
42
  }