【优化】file 插件代码细节格式,并提取 elog_file_config API。

Signed-off-by: armink <armink.ztl@gmail.com>
pull/39/head
armink 7 years ago
parent 41789b3a8f
commit afabf352f3

@ -34,33 +34,31 @@
#include <file/elog_file.h> #include <file/elog_file.h>
#include <file/elog_file_cfg.h> #include <file/elog_file_cfg.h>
/* initialize OK flag */ /* initialize OK flag */
static bool init_ok = false; static bool init_ok = false;
static FILE *fp; static FILE *fp = NULL;
static int fd; static int fd = -1;
static Elog_File_Cfg file; static ElogFileCfg local_cfg;
static void elog_file_config_init(Elog_File_Cfg *file);
ElogErrCode elog_file_init(void) ElogErrCode elog_file_init(void)
{ {
ElogErrCode result = ELOG_NO_ERR; ElogErrCode result = ELOG_NO_ERR;
ElogFileCfg cfg;
if (init_ok) if (init_ok)
goto __exit; goto __exit;
elog_file_config_init(&file); elog_file_port_init();
fp = fopen(file.name, "a+"); cfg.name = ELOG_FILE_NAME;
if (fp) cfg.max_size = ELOG_FILE_MAX_SIZE;
fd = fileno(fp);
else
fd = -1;
elog_file_port_init(); elog_file_config(&cfg);
init_ok = true; init_ok = true;
__exit: __exit:
return result; return result;
} }
void elog_file_write(const char *log, size_t size) void elog_file_write(const char *log, size_t size)
@ -72,17 +70,17 @@ void elog_file_write(const char *log, size_t size)
statbuf.st_size = 0; statbuf.st_size = 0;
fstat(fd, &statbuf); fstat(fd, &statbuf);
if (unlikely(statbuf.st_size > local_cfg.max_size))
if (unlikely(statbuf.st_size > file.max_size)) return;
return ;
elog_file_port_lock(); elog_file_port_lock();
fwrite(log, size, 1, fp); fwrite(log, size, 1, fp);
#ifdef ELOG_FILE_FLUSH_CAHCE_ENABLE #ifdef ELOG_FILE_FLUSH_CAHCE_ENABLE
fflush(fp); fflush(fp);
fsync(fd); fsync(fd);
#endif #endif
elog_file_port_unlock(); elog_file_port_unlock();
} }
@ -95,8 +93,22 @@ void elog_file_deinit(void)
fclose(fp); fclose(fp);
} }
static void elog_file_config_init(Elog_File_Cfg *file) void elog_file_config(ElogFileCfg *cfg)
{ {
file->name = ELOG_FILE_NAME; if (fp) {
file->max_size = ELOG_FILE_MAX_SIZE; fclose(fp);
}
elog_file_port_lock();
local_cfg.name = cfg->name;
local_cfg.max_size = cfg->max_size;
fp = fopen(local_cfg.name, "a+");
if (fp)
fd = fileno(fp);
else
fd = -1;
elog_file_port_unlock();
} }

@ -28,6 +28,7 @@
#ifndef __ELOG_FILE__H__ #ifndef __ELOG_FILE__H__
#define __ELOG_FILE__H__ #define __ELOG_FILE__H__
#include <stdio.h> #include <stdio.h>
#include <elog.h> #include <elog.h>
@ -35,7 +36,7 @@
extern "C" { extern "C" {
#endif #endif
/* EasyLogger file log plugin's software version number */ /* EasyLogger file log plugin's software version number */
#define ELOG_FILE_SW_VERSION "V1.0.0" #define ELOG_FILE_SW_VERSION "V1.0.0"
#ifdef linux #ifdef linux
#define likely(x) __builtin_expect(!!(x), 1) #define likely(x) __builtin_expect(!!(x), 1)
@ -46,13 +47,14 @@ extern "C" {
#endif #endif
typedef struct { typedef struct {
char *name;/* file name */ char *name; /* file name */
size_t max_size;/* file max size */ size_t max_size; /* file max size */
} Elog_File_Cfg; } ElogFileCfg;
/* elog_file.c */ /* elog_file.c */
ElogErrCode elog_file_init(void); ElogErrCode elog_file_init(void);
void elog_file_write(const char *log, size_t size); void elog_file_write(const char *log, size_t size);
void elog_file_config(ElogFileCfg *cfg);
void elog_file_deinit(void); void elog_file_deinit(void);
/* elog_file_port.c */ /* elog_file_port.c */

@ -30,9 +30,9 @@
#define _ELOG_FILE_CFG_H_ #define _ELOG_FILE_CFG_H_
/* EasyLogger file log plugin's using file name */ /* EasyLogger file log plugin's using file name */
#define ELOG_FILE_NAME #define ELOG_FILE_NAME /* @note you must define it for a value */
/* EasyLogger file log plugin's using file max size */ /* EasyLogger file log plugin's using file max size */
#define ELOG_FILE_MAX_SIZE #define ELOG_FILE_MAX_SIZE /* @note you must define it for a value */
#endif /* _ELOG_FILE_CFG_H_ */ #endif /* _ELOG_FILE_CFG_H_ */

@ -38,28 +38,8 @@ ElogErrCode elog_file_port_init(void)
ElogErrCode result = ELOG_NO_ERR; ElogErrCode result = ELOG_NO_ERR;
/* add your code here */ /* add your code here */
return result;
}
/**
* flush file cache
*/
void elog_file_port_flush_cache(Elog_File *file) {
/* add your code here */
}
/** return result;
* get file current size
*/
size_t elog_file_port_get_size(Elog_File *file)
{
/* add your code here */
return 0;
} }
/** /**
@ -79,6 +59,7 @@ void elog_file_port_unlock(void) {
/* add your code here */ /* add your code here */
} }
/** /**
* file log deinit * file log deinit
*/ */

Loading…
Cancel
Save