v / vlib / log / default.v
64 lines · 54 sloc · 1.96 KB · aeaf607259be747709e475cf6972aaaeb6f2f1dd
Raw
1// Copyright (c) 2019-2024 Alexander Medvednikov. All rights reserved.
2// Use of this source code is governed by an MIT license
3// that can be found in the LICENSE file.
4module log
5
6// set_logger changes the default logger instance to the one provided by the user.
7// The existing logger will be freed, *after* the change is done.
8@[manualfree]
9pub fn set_logger(logger &Logger) {
10 // C.printf(c"set_logger logger: %p | old logger: %p\n", logger, default_logger)
11 old_logger := unsafe { default_logger }
12 default_logger = unsafe { logger }
13 free_logger(old_logger)
14}
15
16// get_logger returns a pointer to the current default logger instance
17@[unsafe]
18pub fn get_logger() &Logger {
19 return default_logger
20}
21
22// get_level returns the log level of the default Logger instance
23pub fn get_level() Level {
24 return default_logger.get_level()
25}
26
27// set_level changes the log level of the default Logger instance
28pub fn set_level(level Level) {
29 default_logger.set_level(level)
30}
31
32// fatal logs a `fatal` message, using the default Logger instance
33@[noreturn]
34pub fn fatal(s string) {
35 default_logger.fatal(s)
36 // the compiler currently has no way to mark functions in an interface
37 // as @[noreturn], so we need to make sure this is never returning ourselves
38 exit(1)
39}
40
41// error logs an `error` message, using the default Logger instance
42pub fn error(s string) {
43 default_logger.error(s)
44}
45
46// error logs a `warning` message, using the default Logger instance
47pub fn warn(s string) {
48 default_logger.warn(s)
49}
50
51// info logs an `info` message, using the default Logger instance
52pub fn info(s string) {
53 default_logger.info(s)
54}
55
56// debug logs a `debug` message, using the default Logger instance
57pub fn debug(s string) {
58 default_logger.debug(s)
59}
60
61// set_always_flush called with true, will make the log flush after every single .fatal(), .error(), .warn(), .info(), .debug() call.
62pub fn set_always_flush(should_flush_on_every_message bool) {
63 default_logger.set_always_flush(should_flush_on_every_message)
64}
65