new logger works now
FossilOrigin-Name: 8caefb55dcea0bebc0d75368d38571c71bbf656b7bcea4d4c34bfda93367982a
This commit is contained in:
parent
cd45e604f3
commit
61183b47ae
@ -1,11 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CodeLite_Workspace Name="actube" Database="">
|
<CodeLite_Workspace Name="actube" Database="">
|
||||||
<Project Name="ac" Path="ac.project" Active="Yes"/>
|
<Project Name="ac" Path="ac.project" Active="No"/>
|
||||||
<Project Name="wtp" Path="wtp.project" Active="No"/>
|
<Project Name="wtp" Path="wtp.project" Active="No"/>
|
||||||
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
|
<Project Name="mod_cipwap" Path="mod_cipwap.project" Active="No"/>
|
||||||
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
|
<Project Name="mod_capwap" Path="mod_capwap.project" Active="No"/>
|
||||||
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>
|
<Project Name="mod_cisco" Path="mod_cisco.project" Active="No"/>
|
||||||
<Project Name="libcw" Path="libcw.project" Active="No"/>
|
<Project Name="libcw" Path="libcw.project" Active="Yes"/>
|
||||||
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
|
<Project Name="mod_capwap80211" Path="mod_capwap80211.project" Active="No"/>
|
||||||
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
|
<Project Name="mod_fortinet" Path="mod_fortinet.project" Active="No"/>
|
||||||
<BuildMatrix>
|
<BuildMatrix>
|
||||||
|
@ -98,15 +98,20 @@ extern void test_sets();
|
|||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
/* cw_log_init();
|
||||||
|
cw_log(LOG_ERROR,"Hello Debug World222");
|
||||||
|
exit(0);
|
||||||
|
*/
|
||||||
|
/*
|
||||||
char * dump_data = "Eine kleine Mickey Maus zog sich mal die Hosen\
|
char * dump_data = "Eine kleine Mickey Maus zog sich mal die Hosen\
|
||||||
aus, zog sie wieder an, und du bist dran. Dran bist du noch lange nicht\
|
aus, zog sie wieder an, und du bist dran. Dran bist du noch lange nicht\
|
||||||
musst erst sagen, wie alt du bist.";
|
musst erst sagen, wie alt du bist.";
|
||||||
|
|
||||||
char * result = cw_format_dump(dump_data,strlen(dump_data),0);
|
char * result = cw_format_dump(dump_data,strlen(dump_data),NULL);
|
||||||
|
|
||||||
printf("Dump Result:\n%s\n", result);
|
printf("Dump Result:\n%s\n", result);
|
||||||
exit(0);
|
exit(0);
|
||||||
|
*/
|
||||||
|
|
||||||
/* char data[100];
|
/* char data[100];
|
||||||
mavl_t im;
|
mavl_t im;
|
||||||
|
@ -7,34 +7,53 @@
|
|||||||
|
|
||||||
|
|
||||||
static struct cw_FormatDumpSettings CW_FORMAT_DUMP_SETTINGS = {
|
static struct cw_FormatDumpSettings CW_FORMAT_DUMP_SETTINGS = {
|
||||||
32/*CW_FORMAT_DUMP_ROW_LEN*/, /* rowlen */
|
32, /* row_len */
|
||||||
|
8, /* marker_distance */
|
||||||
|
'|', /* marker_char */
|
||||||
1, /* ascii */
|
1, /* ascii */
|
||||||
0, /* settings->invlen */
|
0, /* inv_len */
|
||||||
|
'*', /* inv_char */
|
||||||
"\n\t", /* dump_prefix */
|
"\n\t", /* dump_prefix */
|
||||||
|
" ", /* ascii_prefix */
|
||||||
|
"\n\t" /* newline */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void cw_format_get_dump_defaults(struct cw_FormatDumpSettings * settings)
|
||||||
|
{
|
||||||
|
memcpy(settings, &CW_FORMAT_DUMP_SETTINGS,
|
||||||
static int cw_format_dump_row(char *dst, const uint8_t * data, int len){
|
sizeof(struct cw_FormatDumpSettings));
|
||||||
char *pdst = dst;
|
|
||||||
int i;
|
|
||||||
char *sp;
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
sp = ((i+1)%4==0 && i<len-1) ? "|" : " ";
|
|
||||||
pdst += sprintf(pdst, "%02X%s", data[i] & 0xff, sp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pdst+=sprintf(pdst," ");
|
|
||||||
|
|
||||||
|
static int cw_format_dump_row(char *dst, const uint8_t * data, int len,
|
||||||
|
struct cw_FormatDumpSettings * settings){
|
||||||
|
char *pdst, marker;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
pdst = dst;
|
||||||
|
for (i = 0; i < len; i++) {
|
||||||
|
marker = ((i+1)% settings->marker_distance==0 && i<len-1)
|
||||||
|
? settings->marker_char
|
||||||
|
: ' ';
|
||||||
|
pdst += sprintf(pdst, "%02X%c", data[i] & 0xff, marker);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (settings->ascii){
|
||||||
|
for(i=len; i<settings->row_len; i++){
|
||||||
|
pdst += sprintf(pdst," ");
|
||||||
|
}
|
||||||
|
|
||||||
|
pdst+=sprintf(pdst,"%s",settings->ascii_prefix);
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
int c = data[i] & 0xff;
|
int c = data[i] & 0xff;
|
||||||
if (c < 0x20 || c > 0x7f)
|
if (c < 0x20 || c > 0x7f)
|
||||||
c = '.';
|
c = '.';
|
||||||
pdst+=sprintf(pdst,"%c",c);
|
pdst+=sprintf(pdst,"%c",c);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pdst+=sprintf(pdst,"%s","\n");
|
pdst+=sprintf(pdst,"%s",settings->newline);
|
||||||
return pdst-dst;
|
return pdst-dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,84 +71,44 @@ static int cw_format_dump_row(char *dst, const uint8_t * data, int len){
|
|||||||
char *cw_format_dump(const uint8_t * data, int len,
|
char *cw_format_dump(const uint8_t * data, int len,
|
||||||
struct cw_FormatDumpSettings *settings)
|
struct cw_FormatDumpSettings *settings)
|
||||||
{
|
{
|
||||||
int i;
|
int row,rows,size;
|
||||||
|
char *dst, *pdst;
|
||||||
int row,rows;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!settings)
|
if (!settings)
|
||||||
settings = &CW_FORMAT_DUMP_SETTINGS;
|
settings = &CW_FORMAT_DUMP_SETTINGS;
|
||||||
|
|
||||||
rows = len / settings->rowlen;
|
rows = len / settings->row_len;
|
||||||
|
if (len % settings->row_len)
|
||||||
|
rows++;
|
||||||
|
|
||||||
printf("Number fo rows: %d\n",rows);
|
size = strlen(settings->dump_prefix) +
|
||||||
|
rows * strlen(settings->newline) +
|
||||||
|
(settings->ascii ? rows*settings->row_len*3 : len * 3);
|
||||||
|
|
||||||
int md;
|
if (settings->ascii){
|
||||||
if (settings->ascii)
|
size += len + rows*strlen(settings->ascii_prefix);
|
||||||
md = 2;
|
}
|
||||||
else
|
|
||||||
md = 1;
|
|
||||||
|
|
||||||
char *dst = malloc(2 * (md * (len * 3 + (rows * 2) + 8 )));
|
dst = malloc(size+1);
|
||||||
if (!dst)
|
if (!dst)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (len % settings->rowlen)
|
|
||||||
rows++;
|
|
||||||
|
|
||||||
char *pdst = dst;
|
|
||||||
|
|
||||||
pdst += sprintf(pdst, "%s",settings->dump_prefix);
|
|
||||||
/* pdst += 2; */
|
|
||||||
|
|
||||||
char asc_buffer[128];
|
|
||||||
char *ascdst = asc_buffer;
|
|
||||||
|
|
||||||
pdst = dst;
|
pdst = dst;
|
||||||
for (row; row<rows; row++){
|
pdst += sprintf(pdst, "%s",settings->dump_prefix);
|
||||||
int n;
|
|
||||||
pdst += cw_format_dump_row(pdst,data+row*settings->rowlen,settings->rowlen);
|
for (row=0; row<rows; row++){
|
||||||
|
int rlen, pos;
|
||||||
|
pos = row * settings->row_len;
|
||||||
|
if (len - pos > settings->row_len){
|
||||||
|
rlen = settings->row_len;
|
||||||
}
|
}
|
||||||
return dst;
|
else{
|
||||||
|
rlen = len-pos;
|
||||||
|
|
||||||
for (i = 0; i < len; i++) {
|
|
||||||
char *sp = " ";
|
|
||||||
if (i == settings->invlen - 1)
|
|
||||||
sp = "|";
|
|
||||||
|
|
||||||
pdst += sprintf(pdst, "%02X%s", data[i] & 0xff, sp);
|
|
||||||
if (settings->ascii) {
|
|
||||||
int c = data[i] & 0xff;
|
|
||||||
if (c < 0x20 || c > 0x7f)
|
|
||||||
c = '.';
|
|
||||||
*ascdst = c;
|
|
||||||
ascdst++;
|
|
||||||
}
|
}
|
||||||
|
pdst += cw_format_dump_row(pdst,data+pos, rlen, settings);
|
||||||
if ((i + 1) % settings->rowlen == 0) {
|
|
||||||
int l;
|
|
||||||
if (settings->ascii) {
|
|
||||||
*ascdst = 0;
|
|
||||||
l = sprintf(pdst, " | %s\n\t", asc_buffer);
|
|
||||||
ascdst = asc_buffer;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
l = sprintf(pdst, "\n\t");
|
|
||||||
}
|
|
||||||
pdst += l;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings->ascii) {
|
|
||||||
*ascdst = 0;
|
|
||||||
if (strlen(asc_buffer))
|
|
||||||
pdst += sprintf(pdst, " | %s", asc_buffer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return dst;
|
return dst;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,10 +54,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
void (*cw_dbg_cb) (int level, const char *format, ...) = CW_LOG_DEFAULT_LOG;
|
void (*cw_dbg_cb) (int level, const char *format, ...) = CW_LOG_DEFAULT_LOG;
|
||||||
void (*cw_dbg_vcb) (int level, const char *fromat, va_list args) = CW_LOG_DEFAULT_VLOG;
|
void (*cw_dbg_vcb) (int level, const char *fromat, va_list args) = CW_LOG_DEFAULT_VLOG;
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
uint32_t cw_dbg_opt_display = 0;
|
uint32_t cw_dbg_opt_display = 0;
|
||||||
@ -613,7 +613,8 @@ void cw_dbg_colored(int level, const char *file, int line, const char *format, .
|
|||||||
|
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
cw_log_vcb(level, fbuf, args);
|
/* cw_log_vcb(level, fbuf, args);*/
|
||||||
|
cw_log_console_writer.write(LOG_DEBUG,fbuf,args,&cw_log_console_writer);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,11 @@
|
|||||||
#include "dbg.h"
|
#include "dbg.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cw_debug(const char * file, int line, struct dbg_Context *ctx, int level,
|
void cw_debug(const char * file, int line, struct dbg_Context *ctx, int level,
|
||||||
const char * format, ...){
|
const char * format, ...){
|
||||||
|
va_list args;
|
||||||
if (!(cw_dbg_is_level(level)))
|
if (!(cw_dbg_is_level(level)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -18,9 +21,9 @@ void cw_debug(const char * file, int line, struct dbg_Context *ctx, int level,
|
|||||||
);
|
);
|
||||||
|
|
||||||
*/
|
*/
|
||||||
va_list args;
|
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
cw_log_vcb(level, format, args);
|
cw_log_console_writer.write(LOG_DEBUG,format,args,&cw_log_console_writer);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,21 +85,27 @@ int format_dot11_fc(char *dst, uint16_t fc);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef CW_FORMAT_DUMP_ROW_LEN
|
|
||||||
#define CW_FORMAT_DUMP_ROW_LEN 16
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct cw_FormatDumpSettings {
|
struct cw_FormatDumpSettings {
|
||||||
int rowlen;
|
int row_len;
|
||||||
|
int marker_distance;
|
||||||
|
char marker_char;
|
||||||
int ascii;
|
int ascii;
|
||||||
int invlen;
|
|
||||||
|
int inv_len;
|
||||||
|
char inv_char;
|
||||||
|
|
||||||
const char * dump_prefix;
|
const char * dump_prefix;
|
||||||
|
const char * ascii_prefix;
|
||||||
|
const char *newline;
|
||||||
};
|
};
|
||||||
|
|
||||||
char *cw_format_dump(const uint8_t * data, int len,
|
char *cw_format_dump(const uint8_t * data, int len,
|
||||||
struct cw_FormatDumpSettings *settings);
|
struct cw_FormatDumpSettings *settings);
|
||||||
|
|
||||||
|
void cw_format_get_dump_defaults(struct cw_FormatDumpSettings * settings);
|
||||||
|
|
||||||
|
|
||||||
/**@}*/
|
/**@}*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
156
src/cw/log.c
156
src/cw/log.c
@ -19,108 +19,98 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "strlist.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
/*
|
||||||
void (*cw_log_cb)(int level,const char * fromat, ...) = CW_LOG_DEFAULT_LOG;
|
void (*cw_log_cb)(int level,const char * fromat, ...) = CW_LOG_DEFAULT_LOG;
|
||||||
void (*cw_log_vcb)(int level,const char * fromat, va_list args) = CW_LOG_DEFAULT_VLOG;
|
void (*cw_log_vcb)(int level,const char * fromat, va_list args) = CW_LOG_DEFAULT_VLOG;
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char * cw_log_name = "actube";
|
||||||
|
|
||||||
|
|
||||||
const char * cw_log_name = "cw";
|
static struct cw_strlist_elem prefix[] = {
|
||||||
static int colored=1;
|
{LOG_DEBUG, "DBG"},
|
||||||
|
{LOG_INFO, "INF" },
|
||||||
|
{LOG_NOTICE, "NOTICE"},
|
||||||
|
{LOG_WARNING, "WARNING"},
|
||||||
|
{LOG_ERR,"ERROR"},
|
||||||
|
{CW_STR_STOP, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cw_strlist_elem prefix_color[] = {
|
||||||
|
{LOG_DEBUG, ""},
|
||||||
|
{LOG_INFO, "" },
|
||||||
|
{LOG_NOTICE, ""},
|
||||||
|
{LOG_WARNING, ""},
|
||||||
|
{LOG_ERR,"\033[1;31m"},
|
||||||
|
{CW_STR_STOP, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cw_strlist_elem text_color[] = {
|
||||||
|
{LOG_DEBUG, ""},
|
||||||
|
{LOG_INFO, "" },
|
||||||
|
{LOG_NOTICE, ""},
|
||||||
|
{LOG_WARNING, ""},
|
||||||
|
{LOG_ERR,"\033[22m"},
|
||||||
|
{CW_STR_STOP, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cw_strlist_elem end_color[] = {
|
||||||
|
{LOG_DEBUG, ""},
|
||||||
|
{LOG_INFO, "" },
|
||||||
|
{LOG_NOTICE, ""},
|
||||||
|
{LOG_WARNING, ""},
|
||||||
|
{LOG_ERR,"\033[22;39m"},
|
||||||
|
{CW_STR_STOP, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct cw_LogWriter * writers[] = {
|
||||||
|
&cw_log_syslog_writer,
|
||||||
|
&cw_log_console_writer,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
static const char * get_log_prefix(int level)
|
void cw_log(int prio, const char *format, ...)
|
||||||
{
|
|
||||||
switch(level){
|
|
||||||
case LOG_DEBUG:
|
|
||||||
return "DBG";
|
|
||||||
case LOG_INFO:
|
|
||||||
return "INF";
|
|
||||||
case LOG_ERR:
|
|
||||||
return "ERROR";
|
|
||||||
case LOG_WARNING:
|
|
||||||
return "WARNING";
|
|
||||||
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char * get_log_color_on(int level){
|
|
||||||
if ( !colored )
|
|
||||||
return "";
|
|
||||||
|
|
||||||
|
|
||||||
switch(level){
|
|
||||||
case LOG_DEBUG:
|
|
||||||
return "";
|
|
||||||
case LOG_INFO:
|
|
||||||
return "";
|
|
||||||
case LOG_ERR:
|
|
||||||
return "\033[1;31m";
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char * get_log_color_ontext(int level){
|
|
||||||
if ( !colored )
|
|
||||||
return "";
|
|
||||||
|
|
||||||
|
|
||||||
switch(level){
|
|
||||||
case LOG_DEBUG:
|
|
||||||
return "";
|
|
||||||
case LOG_INFO:
|
|
||||||
return "";
|
|
||||||
case LOG_ERR:
|
|
||||||
return "\033[22m";
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const char * get_log_color_off(int level){
|
|
||||||
if ( !colored )
|
|
||||||
return "";
|
|
||||||
|
|
||||||
|
|
||||||
switch(level){
|
|
||||||
case LOG_DEBUG:
|
|
||||||
return "";
|
|
||||||
case LOG_INFO:
|
|
||||||
return "";
|
|
||||||
case LOG_ERR:
|
|
||||||
return "\033[22;39m";
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cw_log_colored(int level, const char *format, ...)
|
|
||||||
{
|
{
|
||||||
|
va_list args;
|
||||||
char fbuf[1024];
|
char fbuf[1024];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for (i=0; writers[i]; i++){
|
||||||
|
|
||||||
|
if (writers[i]->colored){
|
||||||
sprintf(fbuf, "%s%s%s: %s%s",
|
sprintf(fbuf, "%s%s%s: %s%s",
|
||||||
get_log_color_on(level),
|
cw_strlist_get_str(prefix_color,prio),
|
||||||
get_log_prefix(level),
|
cw_strlist_get_str(prefix,prio),
|
||||||
get_log_color_ontext(level),
|
cw_strlist_get_str(text_color,prio),
|
||||||
format,
|
format,
|
||||||
get_log_color_off(level)
|
cw_strlist_get_str(end_color,prio)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
sprintf(fbuf, "%s: %s",
|
||||||
|
cw_strlist_get_str(prefix,prio),
|
||||||
|
format
|
||||||
|
);
|
||||||
|
|
||||||
va_list args;
|
}
|
||||||
va_start(args, format);
|
va_start(args, format);
|
||||||
cw_log_vcb(level,fbuf,args);
|
writers[i]->write(prio,fbuf,args,writers[i]);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cw_log_init(){
|
||||||
|
int i;
|
||||||
|
for (i=0; writers[i]; i++){
|
||||||
|
writers[i]->open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
79
src/cw/log.h
79
src/cw/log.h
@ -39,71 +39,42 @@
|
|||||||
#define CW_LOG_DEFAULT_VLOG cw_log_vfile
|
#define CW_LOG_DEFAULT_VLOG cw_log_vfile
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct cw_LogWriter {
|
||||||
|
const char * name;
|
||||||
|
int colored;
|
||||||
|
void (*open) ();
|
||||||
|
void (*write) (int prio, const char *format, va_list args, struct cw_LogWriter *w);
|
||||||
|
void (*close) ();
|
||||||
|
void * priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct cw_LogWriter cw_log_syslog_writer;
|
||||||
|
extern struct cw_LogWriter cw_log_console_writer;
|
||||||
|
|
||||||
|
void cw_log_init();
|
||||||
|
void cw_log(int level, const char *format, ...);
|
||||||
|
extern const char *cw_log_name;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/****/
|
||||||
|
|
||||||
|
/*extern void (*cw_log_cb) (int level, const char *fromat, ...);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
//extern void cw_log_dbg_(int type, const char *file, int line, const char *fromat, ...);
|
|
||||||
//extern void cw_log_dbg_dmp_(int type, const char *file, int line, const uint8_t * data,
|
|
||||||
//int len, const char *format, ...);
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*#ifdef WITH_CW_LOG*/
|
|
||||||
/*#define cw_log(level,...) cw_log_colored(level,__VA_ARGS__)*/
|
|
||||||
|
|
||||||
#define cw_log cw_log_colored
|
|
||||||
|
|
||||||
/*#else
|
|
||||||
#define cw_log(...)
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
//#ifdef WITH_CW_LOG_DEBUG
|
|
||||||
|
|
||||||
|
|
||||||
//#define cw_log_dbg(type,...) cw_log_dbg_(type,__FILE__,__LINE__,__VA_ARGS__)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//#define cw_log_dbg_dmp(type,str,len,...) cw_log_dbg_dmp_(type,__FILE__,__LINE__,str,len,__VA_ARGS__)
|
|
||||||
//#define cw_dbg_dmp(type,str,len,...) cw_log_dbg_dmp_(type,__FILE__,__LINE__,str,len,__VA_ARGS__)
|
|
||||||
|
|
||||||
//#define cw_dbg_msgelem(msgtype,msgelemtype,msgbuf,msglen) cw_dbg_msgelem_(msgtype,msgelemtype,msgbuf,msglen)
|
|
||||||
//#define cw_dbg_missing_mand_elems(conn, msgtyoe, mand) cw_dbg_missing_mand_elems_(conn, msgtyoe, mand)
|
|
||||||
|
|
||||||
//#define lw_dbg_elem(msgtype,msgelemtype,msgbuf,msglen) lw_dbg_elem_(msgtype,msgelemtype,msgbuf,msglen)
|
|
||||||
|
|
||||||
//#else
|
|
||||||
//#define cw_log_dbg(...)
|
|
||||||
//#define cw_dbg(...)
|
|
||||||
|
|
||||||
//#define cw_dbg_missing_mand_elems(conn, msgtyoe, mand)
|
|
||||||
|
|
||||||
//#endif
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
extern void (*cw_log_cb) (int level, const char *fromat, ...);
|
|
||||||
extern void (*cw_log_vcb) (int level, const char *fromat, va_list args);
|
extern void (*cw_log_vcb) (int level, const char *fromat, va_list args);
|
||||||
|
*/
|
||||||
/* Syslog functins */
|
/* Syslog functins */
|
||||||
extern void cw_log_syslog(int level, const char *format, ...);
|
|
||||||
extern void cw_log_vsyslog(int level,const char * format, va_list args);
|
|
||||||
|
|
||||||
/* Log to File functions */
|
/* Log to File functions */
|
||||||
|
|
||||||
|
/*
|
||||||
void cw_log_vfile(int level,const char * format, va_list args);
|
void cw_log_vfile(int level,const char * format, va_list args);
|
||||||
void cw_log_file(int level,const char *format, ...);
|
void cw_log_file(int level,const char *format, ...);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cw_log_colored(int level, const char *format, ...);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
@ -112,6 +83,8 @@ void cw_log_colored(int level, const char *format, ...);
|
|||||||
//extern void (*cw_log_debug_cbs[]) (const char *fromat, ...);
|
//extern void (*cw_log_debug_cbs[]) (const char *fromat, ...);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
extern int cw_log_debug_dump_(int level, const uint8_t * data, int len,
|
extern int cw_log_debug_dump_(int level, const uint8_t * data, int len,
|
||||||
const char *format, ...);
|
const char *format, ...);
|
||||||
|
|
||||||
@ -138,6 +111,6 @@ struct cw_dbg_cfgstrs {
|
|||||||
extern struct cw_dbg_cfgstrs cw_dbg_cfgstrs[];
|
extern struct cw_dbg_cfgstrs cw_dbg_cfgstrs[];
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -4,23 +4,23 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
|
||||||
int cw_log_file_flags = LOG_PERROR;
|
static void open(){
|
||||||
char * cw_log_filename = NULL;
|
}
|
||||||
|
|
||||||
|
static void close(){
|
||||||
|
|
||||||
void cw_log_vfile(int level,const char * format, va_list args)
|
}
|
||||||
|
static void write(int level,const char * format, va_list args, struct cw_LogWriter * w)
|
||||||
{
|
{
|
||||||
vprintf(format,args);
|
vprintf(format,args);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
void cw_log_file(int level,const char *format, ...)
|
struct cw_LogWriter cw_log_console_writer = {
|
||||||
{
|
"syslog", /* name */
|
||||||
va_list args;
|
1, /* colored */
|
||||||
va_start(args, format);
|
open, /* open */
|
||||||
cw_log_vfile(level,format,args);
|
write, /* write */
|
||||||
va_end(args);
|
close, /* close */
|
||||||
closelog();
|
NULL /* priv */
|
||||||
}
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,21 +17,29 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
|
||||||
void cw_log_vsyslog(int level,const char * format, va_list args)
|
static void open(){
|
||||||
|
/* openlog (cw_log_name, LOG_PERROR | LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER); */
|
||||||
|
openlog (cw_log_name, LOG_NDELAY, LOG_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void close(){
|
||||||
|
|
||||||
|
}
|
||||||
|
static void write(int level,const char * format, va_list args, struct cw_LogWriter * w)
|
||||||
{
|
{
|
||||||
openlog (cw_log_name, LOG_PERROR | LOG_CONS | LOG_PID | LOG_NDELAY, LOG_DEBUG);
|
|
||||||
vsyslog(level,format,args);
|
vsyslog(level,format,args);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cw_log_syslog(int level,const char *format, ...)
|
struct cw_LogWriter cw_log_syslog_writer = {
|
||||||
{
|
"syslog", /* name */
|
||||||
va_list args;
|
0, /* colored */
|
||||||
va_start(args, format);
|
open, /* open */
|
||||||
cw_log_vsyslog(level,format,args);
|
write, /* write */
|
||||||
va_end(args);
|
close, /* close */
|
||||||
closelog();
|
NULL /* priv */
|
||||||
}
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user