syslog.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * syslog.h
  3. *
  4. *
  5. * Copyright 2015 Susi's Strolch
  6. *
  7. * For license information see projects "License.txt"
  8. *
  9. * part of syslog.c - client library
  10. *
  11. */
  12. #ifndef _SYSLOG_H
  13. #define _SYSLOG_H
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17. enum syslog_state {
  18. SYSLOG_NONE, // not initialized
  19. SYSLOG_WAIT, // waiting for Wifi
  20. SYSLOG_INIT, // WIFI avail, must initialize
  21. SYSLOG_INITDONE,
  22. SYSLOG_DNSWAIT, // WIFI avail, init done, waiting for DNS resolve
  23. SYSLOG_READY, // Wifi established, ready to send
  24. SYSLOG_SENDING, // UDP package on the air
  25. SYSLOG_SEND,
  26. SYSLOG_SENT,
  27. SYSLOG_HALTED, // heap full, discard message
  28. SYSLOG_ERROR,
  29. };
  30. enum syslog_priority {
  31. SYSLOG_PRIO_EMERG, /* system is unusable */
  32. SYSLOG_PRIO_ALERT, /* action must be taken immediately */
  33. SYSLOG_PRIO_CRIT, /* critical conditions */
  34. SYSLOG_PRIO_ERR, /* error conditions */
  35. SYSLOG_PRIO_WARNING, /* warning conditions */
  36. SYSLOG_PRIO_NOTICE, /* normal but significant condition */
  37. SYSLOG_PRIO_INFO, /* informational */
  38. SYSLOG_PRIO_DEBUG, /* debug-level messages */
  39. };
  40. enum syslog_facility {
  41. SYSLOG_FAC_KERN, /* kernel messages */
  42. SYSLOG_FAC_USER, /* random user-level messages */
  43. SYSLOG_FAC_MAIL, /* mail system */
  44. SYSLOG_FAC_DAEMON, /* system daemons */
  45. SYSLOG_FAC_AUTH, /* security/authorization messages */
  46. SYSLOG_FAC_SYSLOG, /* messages generated internally by syslogd */
  47. SYSLOG_FAC_LPR, /* line printer subsystem */
  48. SYSLOG_FAC_NEWS, /* network news subsystem */
  49. SYSLOG_FAC_UUCP, /* UUCP subsystem */
  50. SYSLOG_FAC_CRON, /* clock daemon */
  51. SYSLOG_FAC_AUTHPRIV,/* security/authorization messages (private) */
  52. SYSLOG_FAC_FTP, /* ftp daemon */
  53. SYSLOG_FAC_LOCAL0, /* reserved for local use */
  54. SYSLOG_FAC_LOCAL1, /* reserved for local use */
  55. SYSLOG_FAC_LOCAL2, /* reserved for local use */
  56. SYSLOG_FAC_LOCAL3, /* reserved for local use */
  57. SYSLOG_FAC_LOCAL4, /* reserved for local use */
  58. SYSLOG_FAC_LOCAL5, /* reserved for local use */
  59. SYSLOG_FAC_LOCAL6, /* reserved for local use */
  60. SYSLOG_FAC_LOCAL7, /* reserved for local use */
  61. };
  62. #define MINIMUM_HEAP_SIZE 8192
  63. #define REG_READ(_r) (*(volatile uint32 *)(_r))
  64. #define WDEV_NOW() REG_READ(0x3ff20c00)
  65. // This variable disappeared from lwip in SDK 2.0...
  66. // extern uint32_t realtime_stamp; // 1sec NTP ticker
  67. typedef struct syslog_host_t syslog_host_t;
  68. struct syslog_host_t {
  69. uint32_t min_heap_size; // minimum allowed heap size when buffering
  70. ip_addr_t addr;
  71. uint16_t port;
  72. };
  73. // buffered syslog event - f.e. if network stack isn't up and running
  74. typedef struct syslog_entry_t syslog_entry_t;
  75. struct syslog_entry_t {
  76. syslog_entry_t *next;
  77. uint32_t msgid;
  78. uint32_t tick;
  79. uint16_t datagram_len;
  80. char datagram[];
  81. };
  82. syslog_host_t syslogserver;
  83. void ICACHE_FLASH_ATTR syslog_init(char *syslog_host);
  84. void ICACHE_FLASH_ATTR syslog(uint8_t facility, uint8_t severity, const char tag[], const char message[], ...);
  85. // some convenience macros
  86. #ifdef SYSLOG
  87. // extern char *esp_link_version; // in user_main.c
  88. #define LOG_DEBUG(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_DEBUG, "esp_link", format, ## __VA_ARGS__ )
  89. #define LOG_NOTICE(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_NOTICE, "esp_link", format, ## __VA_ARGS__ )
  90. #define LOG_INFO(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_INFO, "esp_link", format, ## __VA_ARGS__ )
  91. #define LOG_WARN(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_WARNING, "esp_link", format, ## __VA_ARGS__ )
  92. #define LOG_ERR(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_ERR, "esp_link", format, ## __VA_ARGS__ )
  93. #else
  94. #define LOG_DEBUG(format, ...) do { } while(0)
  95. #define LOG_NOTICE(format, ...) do { } while(0)
  96. #define LOG_WARN(format, ...) do { } while(0)
  97. #define LOG_INFO(format, ...) do { } while(0)
  98. #define LOG_ERR(format, ...) do { } while(0)
  99. #endif
  100. #ifdef __cplusplus
  101. }
  102. #endif
  103. #endif /* _SYSLOG_H */