Skip to content

Commit eb7130f

Browse files
authored
Merge pull request #126 from AthennaIO/develop
fix: adjust formatter defaults for stack driver
2 parents ab3b138 + b93f8c2 commit eb7130f

File tree

7 files changed

+77
-5
lines changed

7 files changed

+77
-5
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@athenna/logger",
3-
"version": "5.16.0",
3+
"version": "5.17.0",
44
"description": "The Athenna logging solution. Log in stdout, files and buckets.",
55
"license": "MIT",
66
"author": "João Lenon <lenon@athenna.io>",

src/drivers/StackDriver.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,22 @@
1010
import { debug } from '#src/debug'
1111
import { Json } from '@athenna/common'
1212
import { Driver } from '#src/drivers/Driver'
13+
import { FactoryHelper } from '#src/helpers/FactoryHelper'
1314
import { DriverFactory } from '#src/factories/DriverFactory'
1415

1516
export class StackDriver extends Driver {
1617
public transport(level: string, message: any): Promise<any> {
1718
const configs = Json.copy(this.configs)
19+
const sharedConfigs = Json.copy(this.configs)
1820

1921
delete configs.driver
2022
delete configs.channels
23+
delete sharedConfigs.driver
24+
delete sharedConfigs.channels
25+
26+
this.driverConfig.channels.forEach(channel => {
27+
delete sharedConfigs[channel]
28+
})
2129

2230
debug(
2331
'[%s] Transporting logs in channels: %s.',
@@ -26,7 +34,10 @@ export class StackDriver extends Driver {
2634
)
2735

2836
const promises = this.driverConfig.channels.map(channel => {
29-
const channelConfig = configs?.[channel]
37+
const channelConfig = FactoryHelper.groupConfigs(
38+
configs?.[channel] || {},
39+
sharedConfigs
40+
)
3041

3142
return DriverFactory.fabricate(channel, channelConfig).transport(
3243
level,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @athenna/logger
3+
*
4+
* (c) João Lenon <lenon@athenna.io>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
export default {
11+
default: 'stack',
12+
channels: {
13+
stack: {
14+
driver: 'stack',
15+
channels: ['simple']
16+
},
17+
simple: {
18+
driver: 'console',
19+
formatter: 'json',
20+
level: 'trace'
21+
}
22+
}
23+
}

tests/fixtures/transporters/loggerCreate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ await Config.safeLoad(Path.config('logging.ts'))
1616

1717
new LoggerProvider().register()
1818

19-
const logger = Log.config({ formatter: 'json' }).create({ namespace: 'UserService' }).channel('application')
19+
const logger = Log.config({ formatter: 'json' }).create({ namespace: 'UserService' })
2020

2121
logger.error('failed to retrieve user')
2222

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @athenna/logger
3+
*
4+
* (c) João Lenon <lenon@athenna.io>
5+
*
6+
* For the full copyright and license information, please view the LICENSE
7+
* file that was distributed with this source code.
8+
*/
9+
10+
import { Config } from '@athenna/config'
11+
import { Log, LoggerProvider } from '#src'
12+
import { Folder, Path } from '@athenna/common'
13+
14+
await new Folder(Path.fixtures('config-stack-defaults')).copy(Path.config())
15+
await Config.safeLoad(Path.config('logging.ts'))
16+
17+
new LoggerProvider().register()
18+
19+
const logger = Log.create({ namespace: 'UserService' })
20+
21+
logger.error('failed to retrieve user')
22+
23+
await Folder.safeRemove(Path.config())
24+
await Folder.safeRemove(Path.storage())

tests/unit/logger/LoggerTest.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ export default class LoggerTest {
3939
assert.equal(message.namespace, 'UserService')
4040
}
4141

42+
@Test()
43+
public async shouldBeAbleToCreateLoggerWithDefaultMessageContentUsingStackChannel({ assert }: Context) {
44+
const { stdout, stderr } = await Exec.node(Path.fixtures('transporters/loggerCreateStack.ts'))
45+
46+
const logs = [...stdout.split('\n').filter(l => l !== ''), ...stderr.split('\n').filter(l => l !== '')].filter(
47+
v => !v.startsWith('(')
48+
)
49+
const message = JSON.parse(logs[0])
50+
51+
assert.equal(message.msg, 'failed to retrieve user')
52+
assert.equal(message.level, 'error')
53+
assert.equal(message.namespace, 'UserService')
54+
}
55+
4256
@Test()
4357
public async shouldBeAbleToReapplyDriversWhenConfigIsCalledAfterChannel({ assert }: Context) {
4458
const { stdout, stderr } = await Exec.node(Path.fixtures('transporters/loggerChannelConfig.ts'))

0 commit comments

Comments
 (0)