#ifndef _LOG_COMMON_H
#define _LOG_COMMON_H

#include "ulog_api.h"

#define MAX_LINE_SZ     1024
#define MAX_PATH_SZ     MAX_LINE_SZ

#define LOG_CONF_PATH           "/etc/rsyslog.d/"

#define LOG_DEV_DIR             "/dev/"
#define BAK_FILE                "/tmp/%s"


#define REDIRECT_SEPERATE       "   "


typedef struct _level_str {
    u32   level;
    char  str[10];
} level_str_t;

extern ulog_t *g_log;
extern FILE *g_conf_fp;
extern char g_conf_file[MAX_PATH_SZ];

static level_str_t g_level_array[] = {
    {LOG_EMERG, "emerg"},
    {LOG_ALERT, "alert"},
    {LOG_CRIT, "crit"},
    {LOG_ERR, "err"},
    {LOG_WARNING, "warn"},
    {LOG_NOTICE, "notice"},
    {LOG_INFO, "info"},
    {LOG_DEBUG, "debug"}        
};

int log_conf(const u8 level, const char *conf_path, const char *conf_file, const char *filter_mod,
          int (*cb_content)(FILE *fp, const u8 level, const char *filter_mod, void *arg), void *arg);
int log_conf_append(const u8 level, const char *conf_path, const char *conf_file, const char *filter_mod,
          int (*cb_content)(FILE *fp, const u8 level, const char *filter_mod, void *arg), void *arg);
int write_conf_content(FILE *fp, const u8 level, const char *filter_mod, void *arg);
int write_conf_content_authorizing(FILE *fp, const u8 level, const char *filter_mod, void *arg);
int log_level_to_str(const u8 level, char *str, u32 len);


#endif