#if defined(CONFIG_RAMLOG_SYSLOG)
const struct syslog_channel_s g_default_channel =
{
ramlog_putc,
ramlog_putc,
syslog_default_flush
};
#elif defined(HAVE_LOWPUTC)
const struct syslog_channel_s g_default_channel =
{
up_putc,
up_putc,
syslog_default_flush
};
#else
const struct syslog_channel_s g_default_channel =
{
syslog_default_putc,
syslog_default_putc,
syslog_default_flush
};
#endif
系统log, 可以1个字符设备,可以是/dev/console,可以 ram log
syslog也设计了缓冲的思想
先打开那个设备,然后设计ramlog
也就是syslog有三种设计,
也是1个流的设计,syslog和printf,我觉得最大区别,syslog有ramlog的设计
syslog还可以直接写入到文件中
//dev 控制作为输出
return syslog_channel(&g_syslog_dev_channel);
都有各自的控制台输出接口
syslog_devchannel.c:177: return syslog_channel(&g_syslog_dev_channel);
ramlog.c:767: return syslog_channel(&g_ramlog_syslog_channel);
syslog_filechannel.c:152: ret = syslog_channel(&g_default_channel);
syslog_filechannel.c:187: ret = syslog_channel(&g_syslog_file_channel);
syslog_consolechannel.c:159: return syslog_channel(&g_syslog_console_channel);
//syslog file才会用到
syslog_channel.c:104:FAR const struct syslog_channel_s *g_syslog_channel = &g_default_channel;
syslog_filechannel.c:152: ret = syslog_channel(&g_default_channel);
//这个感觉没用上,系统没有实现
Kconfig:147: system. The function syslog_file_channel() would need to be called
arch/arm/src/common/up_initialize.c:252: syslog_initialize(SYSLOG_INIT_EARLY);
这里初始化的