Skip to content

Commit 9a46ee9

Browse files
committed
feat: integrate @logtail/node for enhanced logging and update dependencies
1 parent 6e25532 commit 9a46ee9

File tree

4 files changed

+186
-9
lines changed

4 files changed

+186
-9
lines changed

package-lock.json

+173-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
],
3333
"license": "MIT",
3434
"dependencies": {
35+
"@logtail/node": "^0.5.2",
3536
"axios": "^1.7.4",
3637
"deepmerge": "^4.2.2",
3738
"pkg-dir": "5.0.0"
@@ -57,4 +58,4 @@
5758
"jest"
5859
]
5960
}
60-
}
61+
}

src/lib/log-config-factory.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const { Logtail } = require('@logtail/node')
2+
13
function _logConfigFactory (options = {}, { axios, deepmerge, loggerOptions, envVariables }) {
24
options = deepmerge(loggerOptions.previousOptions, options)
35
loggerOptions.previousOptions = options
@@ -48,16 +50,21 @@ function _logConfigFactory (options = {}, { axios, deepmerge, loggerOptions, env
4850
options.betterstack.url = options.betterstack.url || envVariables.BETTERSTACK_URL
4951
options.betterstack.token = options.betterstack.token || envVariables.BETTERSTACK_TOKEN
5052

53+
const logtail = new Logtail(options.betterstack.token, {
54+
endpoint: options.betterstack.url
55+
})
56+
5157
loggerOptions.betterstackLogger = {
52-
log: async msg => {
58+
log: async (level, msg) => {
5359
const betterstackUrl = new URL(options.betterstack.url)
5460
if (!betterstackUrl.hostname.endsWith('betterstackdata.com')) {
5561
throw new Error('Invalid Betterstack URL, must end with betterstackdata.com')
5662
}
5763
if (!betterstackUrl.protocol === 'https:') {
5864
throw new Error('Invalid Betterstack URL, must use HTTPS')
5965
}
60-
await axios.post(options.betterstack.url, msg, { headers: { Authorization: `Bearer ${options.betterstack.token}` } })
66+
if (['silly', 'verbose'].includes(level)) level = 'debug' // Betterstack does not support silly level
67+
logtail[level](msg) // Log to Betterstack with package to get batching and retry logic, and colors! (må vi ha await??)
6168
}
6269
}
6370

src/lib/logger-factory.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ async function _loggerFactory (level, message, { formatDateTime, logLevelMapper,
5555
// Betterstack logging
5656
const shouldLogToBetterstack = (loggerOptions.logToBetterstack && !(!inProduction && loggerOptions.onlyInProd) && betterstackLevelLogToBetterstack) || false
5757
try {
58-
if (shouldLogToBetterstack) await loggerOptions.betterstackLogger.log(messageFormats.betterstackLogMessage)
58+
if (shouldLogToBetterstack) await loggerOptions.betterstackLogger.log(logLevel.level.toLowerCase(), messageFormats.betterstackLogMessage)
5959
} catch (error) {
6060
const warnLevel = logLevelMapper('warn')
6161
const errorMessage = formatLogMessage(formatDateTime, pkg, warnLevel, ['logger-factory', 'logToBetterstack', 'error', error.message])
@@ -101,7 +101,7 @@ function formatLogMessage (formatDateTime, pkg, logLevel, messageArray, context)
101101
return {
102102
logMessage,
103103
remoteLogMessage: `${logLevel.level} - ${logMessage}`,
104-
betterstackLogMessage: `${logLevel.level} - ${logMessage}`,
104+
betterstackLogMessage: logMessage, // Betterstack package will add level and timestamp
105105
localLogMessage: `[ ${fDate} ${fTime} ] < ${logLevel.level} >${logLevel.padding} ${logMessage}`,
106106
teamsMessageCard: formatMessageCard(logLevel, `${logLevel.level} - ${funcDetails}`, messageArray),
107107
teamsAdaptiveCard: formatAdaptiveCard(logLevel, `${logLevel.level} - ${funcDetails}`, messageArray)

0 commit comments

Comments
 (0)