log.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Copyright (c) 2015, Xilinx Inc. and Contributors. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: BSD-3-Clause
  5. */
  6. #include <stdarg.h>
  7. #include <stdio.h>
  8. #include <metal/log.h>
  9. #include <metal/sys.h>
  10. void metal_default_log_handler(enum metal_log_level level,
  11. const char *format, ...)
  12. {
  13. #ifdef DEFAULT_LOGGER_ON
  14. char msg[1024];
  15. va_list args;
  16. static const char *level_strs[] = {
  17. "metal: emergency: ",
  18. "metal: alert: ",
  19. "metal: critical: ",
  20. "metal: error: ",
  21. "metal: warning: ",
  22. "metal: notice: ",
  23. "metal: info: ",
  24. "metal: debug: ",
  25. };
  26. va_start(args, format);
  27. vsnprintf(msg, sizeof(msg), format, args);
  28. va_end(args);
  29. if (level <= METAL_LOG_EMERGENCY || level > METAL_LOG_DEBUG)
  30. level = METAL_LOG_EMERGENCY;
  31. fprintf(stderr, "%s%s", level_strs[level], msg);
  32. #else
  33. (void)level;
  34. (void)format;
  35. #endif
  36. }
  37. void metal_set_log_handler(metal_log_handler handler)
  38. {
  39. _metal.common.log_handler = handler;
  40. }
  41. metal_log_handler metal_get_log_handler(void)
  42. {
  43. return _metal.common.log_handler;
  44. }
  45. void metal_set_log_level(enum metal_log_level level)
  46. {
  47. _metal.common.log_level = level;
  48. }
  49. enum metal_log_level metal_get_log_level(void)
  50. {
  51. return _metal.common.log_level;
  52. }