log4c 代码实现log4crc的配置相应的功能
2011-09-16 15:40
148 查看
笔记一:
要在程序里实现与log4crc配置文件同样的功能来代替配置文件的作用,可以在没有log4crc的情况下正常使用,下面主要把相应的category、appender、ngfilepolicy标签转成相应的代码实现功能。如下XML代码为设置category:
log_category接口实现为:
如上代码注释处,想要设置一个category或者appender,先用log4c_xxx_get(xxx_name)返回对应名字的category或appender,然后用log4c_xxx_set_yyy()等系列接口进行设置。
如下XML代码为设置category:
想要得到上面那行的XML代码的效果,只需使用如下调用:
log_appender_create相应的实现为:
如下XML代码为设置rollingpolicy:
要在程序里实现与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代码的效果,只需使用如下调用:
相关文章推荐
- Java实现AOP功能的封装与配置的小框架实例代码
- jquery实现表格中点击相应行变色功能效果【实例代码】
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现(1)
- rcp(插件开发) 去掉plugin_customization.ini文件,在代码中实现配置功能
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
- MYSQL主从配置以及客户端代码实现读写分离功能
- lucene的开发环境配置,并实现lucene功能一:创建索引;及代码示例
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- 去掉plugin_customization.ini文件,在代码中实现配置功能
- VIM语法高亮、VIM代码补全、VIM结构化视图功能的配置实现
- 自己很丰衣足食Geany中tidy配置,实现自动格式化代码功能
- 黄聪:如何配置Emeditor实现代码智能识别自动完成功能
- J2EE Servlet上传文件到服务器并相应显示功能的实现代码
- MYSQL主从配置以及客户端代码实现读写分离功能
- jQuery代码实现表格中点击相应行变色功能
- Domino实现外网邮件转发功能配置
- js实现仿MSN带关闭功能的右下角弹窗代码