Files
speckle-server/packages/frontend-2/composables/logging.ts
T
Kristaps Fabians Geikins 83d8035dc2 chore: upgrade to eslint 9 (#2348)
* root + server

* frontend

* frontend-2

* dui3

* dui3

* tailwind theme

* ui-components

* preview service

* viewer

* viewer-sandbox

* fileimport-service

* webhook service

* objectloader

* shared

* ui-components-nuxt

* WIP full config

* WIP full linter

* eslint projectwide util

* minor fix

* removing redundant ci

* clean up test errors

* fixed prettier formatting

* CI improvements

* TSC lint fix

* 'buildBatch' needs to be async since some batch types (like Text) require it. Removed a disabled liniting rule from ObjLoader

* removed unnecessary void

---------

Co-authored-by: AlexandruPopovici <alexandrupopoviciioan@gmail.com>
2024-06-12 14:38:02 +03:00

58 lines
1.6 KiB
TypeScript

import type { NuxtApp } from '#app'
import type { Optional } from '@speckle/shared'
import { buildFakePinoLogger } from '~~/lib/core/helpers/observability'
export type AppLogger = ReturnType<typeof useLogger>
export const useLogger = () => {
return useNuxtApp().$logger
}
/**
* Use when you need to be sure that the real structured pino logger is available
* (it isn't in some early startup contexts like apollo link setup)
*/
export const useStrictLogger = async (
options?: Partial<{ dontNotifyFallback: boolean }>
) => {
const { dontNotifyFallback } = options || {}
let nuxtApp: Optional<NuxtApp> = undefined
try {
nuxtApp = useNuxtApp()
} catch (e) {
// suppress 'nuxt is not available'
}
if (nuxtApp?.$logger) return nuxtApp?.$logger
// Nuxt app not found in this scope
const err = new Error(
'Nuxt app for logger not found! Initializing fallback structured logger...'
)
let logger: ReturnType<typeof buildFakePinoLogger>
if (import.meta.server) {
const { buildLogger } = await import('~/server/lib/core/helpers/observability')
logger = buildLogger('info', import.meta.dev ? true : false) // no runtime config, so falling back to default settings
} else {
logger = buildFakePinoLogger()
}
if (!dontNotifyFallback) logger.error(err)
return logger
}
/**
* Short-cut to useLogger().info, useful when you quickly want to console.log something during development.
* Calls to this are skipped outside of dev mode.
*/
export const useDevLogger = () => {
if (!import.meta.dev) return noop
const logger = useLogger()
const info = logger.info.bind(logger)
return info as (...args: unknown[]) => void
}