【优化】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,29 +34,27 @@
#include <file/elog_file.h>
#include <file/elog_file_cfg.h>
/* initialize OK flag */
static bool init_ok = false;
static FILE *fp;
static int fd;
static Elog_File_Cfg file;
static void elog_file_config_init(Elog_File_Cfg *file);
static FILE *fp = NULL;
static int fd = -1;
static ElogFileCfg local_cfg;
ElogErrCode elog_file_init(void)
{
ElogErrCode result = ELOG_NO_ERR;
ElogFileCfg cfg;
if (init_ok)
goto __exit;
elog_file_config_init(&file);
elog_file_port_init();
fp = fopen(file.name, "a+");
if (fp)
fd = fileno(fp);
else
fd = -1;
cfg.name = ELOG_FILE_NAME;
cfg.max_size = ELOG_FILE_MAX_SIZE;
elog_file_port_init();
elog_file_config(&cfg);
init_ok = true;
__exit:
@ -72,13 +70,13 @@ void elog_file_write(const char *log, size_t size)
statbuf.st_size = 0;
fstat(fd, &statbuf);
if (unlikely(statbuf.st_size > file.max_size))
return ;
if (unlikely(statbuf.st_size > local_cfg.max_size))
return;
elog_file_port_lock();
fwrite(log, size, 1, fp);
#ifdef ELOG_FILE_FLUSH_CAHCE_ENABLE
fflush(fp);
fsync(fd);
@ -95,8 +93,22 @@ void elog_file_deinit(void)
fclose(fp);
}
static void elog_file_config_init(Elog_File_Cfg *file)
void elog_file_config(ElogFileCfg *cfg)
{
file->name = ELOG_FILE_NAME;
file->max_size = ELOG_FILE_MAX_SIZE;
if (fp) {
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__
#define __ELOG_FILE__H__
#include <stdio.h>
#include <elog.h>
@ -46,13 +47,14 @@ extern "C" {
#endif
typedef struct {
char *name;/* file name */
size_t max_size;/* file max size */
} Elog_File_Cfg;
char *name; /* file name */
size_t max_size; /* file max size */
} ElogFileCfg;
/* elog_file.c */
ElogErrCode elog_file_init(void);
void elog_file_write(const char *log, size_t size);
void elog_file_config(ElogFileCfg *cfg);
void elog_file_deinit(void);
/* elog_file_port.c */

@ -30,9 +30,9 @@
#define _ELOG_FILE_CFG_H_
/* 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 */
#define ELOG_FILE_MAX_SIZE
#define ELOG_FILE_MAX_SIZE /* @note you must define it for a value */
#endif /* _ELOG_FILE_CFG_H_ */

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

Loading…
Cancel
Save