syslog的设计

#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);
这里初始化的

猜你喜欢

转载自blog.csdn.net/yangang185/article/details/87898385