log4c 代码实现log4crc的配置相应的功能
来源:互联网 发布:旅游产品网络营销策划 编辑:程序博客网 时间:2024/05/17 22:02
笔记一:
要在程序里实现与log4crc配置文件同样的功能来代替配置文件的作用,可以在没有log4crc的情况下正常使用,下面主要把相应的category、appender、ngfilepolicy标签转成相应的代码实现功能。如下XML代码为设置category:
<category name="myemerglog" priority="alert" appender="stdout" />想要得到上面那行的XML代码的效果,只需使用如下调用:
log_category_create("myemerglog", "alert", "stdout");
log_category接口实现为:
int log_category_create(const char *category_name, const char *category_priority, const char *appender_name){ ASSERT(category_name != NULL && category_priority != NULL && appender_name != NULL, "category_name,category_priority or appender_name is NULL\n"); log4c_category_t *cat = NULL; cat = log4c_category_get(category_name); log4c_category_set_priority(cat, log4c_priority_to_int(category_priority)); log4c_category_set_appender(cat, log4c_appender_get(appender_name)); return 0;}
如上代码注释处,想要设置一个category或者appender,先用log4c_xxx_get(xxx_name)返回对应名字的category或appender,然后用log4c_xxx_set_yyy()等系列接口进行设置。
如下XML代码为设置category:
<appender name="emergrollingfile" type="rollingfile" logdir="/var/log/" prefix="emerglog" layout="user_dated" rollingpolicy="emergrollingpolicy" />
想要得到上面那行的XML代码的效果,只需使用如下调用:
log_appender_create("emergrollingfile", "file", "user_dated","emergrollingpolicy", "/var/log/", "emerglog");
log_appender_create相应的实现为:
int log_appender_create(const char *appender_name, const char *app_type, const char *layout_name, const char *rpolicy_name, const char *logdir, const char *prefix){ ASSERT(appender_name != NULL && app_type != NULL && layout_name != NULL, "appender name or app_type or layout_name is NULL!\n"); if (strcasecmp(app_type, "file") == 0) { log4c_appender_t *app = NULL; app = log4c_appender_get(appender_name); log4c_appender_set_type(app, log4c_appender_type_get("rollingfile")); rollingfile_udata_t *rfup = NULL; rfup = rollingfile_make_udata(); rollingfile_udata_set_logdir(rfup, (char *)logdir); rollingfile_udata_set_files_prefix(rfup, (char *)prefix); log4c_rollingpolicy_t *rollingpolicyp = NULL; rollingpolicyp = log4c_rollingpolicy_get(rpolicy_name); rollingfile_udata_set_policy(rfup, rollingpolicyp); log4c_appender_set_udata(app, rfup); log4c_rollingpolicy_init(rollingpolicyp, rfup); if (layout_name != NULL) log4c_appender_set_layout(app, log4c_layout_get(layout_name)); } else if ( (strcasecmp(appender_name, "stdout") == 0 || strcasecmp(appender_name, "stderr") == 0) && strcasecmp(app_type, "stream") == 0) { log4c_appender_t *app = NULL; app = log4c_appender_get(appender_name); log4c_appender_set_type(app, log4c_appender_type_get(app_type)); if (layout_name != NULL) log4c_appender_set_layout(app, log4c_layout_get(layout_name)); } else if (strcasecmp(appender_name, "syslog") == 0) { } else { return ZIP_FAILURE; } return ZIP_SUCCESS;}
如下XML代码为设置rollingpolicy:
<rollingpolicy name="emergrollingpolicy" type="sizewin" maxsize="104857600" maxnum="10" />想要得到上面那行的XML代码的效果,只需使用如下调用:
- log4c 代码实现log4crc的配置相应的功能
- log4crc和log4c版本不匹配导致log4c初始化失败
- log4c的使用
- log4c 的学习
- Log4c的使用
- Log4C的基本用法
- [转]log4c 配置文件的用法
- 实现全选功能的代码
- 功能菜单的实现代码
- 实现导航功能的代码
- 实现打印功能的代码
- 常用的功能实现代码
- 登陆功能的代码实现
- 网络管理软件的分类及相应功能
- 网络管理软件的分类及相应功能
- 网络管理软件的分类及相应功能
- 网络管理软件的分类及相应功能
- 网络管理软件的分类及相应功能
- 死锁的四个必要条件
- 【Linux】 进程间通信
- CStatic的自绘(转载)
- android的repo和git使用遇到的疑难杂症
- debian下编译升级新的linux内核方法【转】
- log4c 代码实现log4crc的配置相应的功能
- Silverlight 安全性错误
- 远程桌面连接 终端服务器超出最大允许连接数,默认只能连接两个用户,超出最大允许连接数,增加最大允许连接数,修改最大连接数
- temp存储
- 纯资源(.rc)DLL创建与使用
- Qt学习笔记,Qt国际化
- warning: implicit declaration of function导致core
- 构建完整的企业信息安全体系
- Android中的Intent详细讲解