log.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef AFUN_LOG_H
  2. #define AFUN_LOG_H
  3. #include "aFunToolExport.h"
  4. #include <setjmp.h>
  5. enum LogLevel {
  6. log_debug = 0,
  7. log_info = 1,
  8. log_warning = 2,
  9. log_error = 3,
  10. log_send_error = 4,
  11. log_fatal_error = 5,
  12. };
  13. typedef enum LogLevel LogLevel;
  14. enum LogFactoryPrintConsole {
  15. log_pc_all = 1,
  16. log_pc_w = 2,
  17. log_pc_e = 3,
  18. log_pc_quite = 4,
  19. };
  20. typedef enum LogFactoryPrintConsole LogFactoryPrintConsole;
  21. struct Logger {
  22. char *id;
  23. LogLevel level;
  24. bool process_send_error; // 若为false则send_error转换为error
  25. bool process_fatal_error; // 若为false则fatal_error转换为error
  26. jmp_buf *buf;
  27. };
  28. typedef struct Logger Logger;
  29. AFUN_TOOL_EXPORT int initLogSystem(FilePath path, LogFactoryPrintConsole print_console);
  30. AFUN_TOOL_EXPORT void initLogger(Logger *logger, char *id, LogLevel level);
  31. AFUN_TOOL_EXPORT void destructLogger(Logger *logger);
  32. AFUN_TOOL_EXPORT int writeDebugLog_(Logger *logger, char *file, int line, char *func, char *format, ...);
  33. AFUN_TOOL_EXPORT int writeInfoLog_(Logger *logger, char *file, int line, char *func, char *format, ...);
  34. AFUN_TOOL_EXPORT int writeWarningLog_(Logger *logger, char *file, int line, char *func, char *format, ...);
  35. AFUN_TOOL_EXPORT int writeErrorLog_(Logger *logger, char *file, int line, char *func, char *format, ...);
  36. AFUN_TOOL_EXPORT int writeSendErrorLog_(Logger *logger, char *file, int line, char *func, char *format, ...);
  37. AFUN_TOOL_EXPORT int writeFatalErrorLog_(Logger *logger, char *file, int line, char *func, int exit_code, char *format, ...);
  38. #ifdef __FILENAME__
  39. #define file_line (char *)__FILENAME__ , (int)__LINE__
  40. #else
  41. #define file_line (char *)"xx", (int)__LINE__
  42. #endif
  43. #define writeDebugLog(logger, ...) writeDebugLog_(logger, file_line, (char *)__FUNCTION__, __VA_ARGS__)
  44. #define writeInfoLog(logger, ...) writeInfoLog_(logger, file_line, (char *)__FUNCTION__, __VA_ARGS__)
  45. #define writeWarningLog(logger, ...) writeWarningLog_(logger, file_line, (char *)__FUNCTION__, __VA_ARGS__)
  46. #define writeErrorLog(logger, ...) writeErrorLog_(logger, file_line, (char *)__FUNCTION__, __VA_ARGS__)
  47. #define writeSendErrorLog(logger, ...) writeSendErrorLog_(logger, file_line, (char *)__FUNCTION__, __VA_ARGS__)
  48. #define writeFatalErrorLog(logger, exit_code, ...) writeFatalErrorLog_(logger, file_line, (char *)__FUNCTION__, exit_code, __VA_ARGS__)
  49. #endif //AFUN_LOG_H