我说的”空行“是类似于:
root@ER706W-4G:/tmp/log# cat systemlog
2025-11-19 00:00:04 logger<5>: [OMADA]The LAN(LAN) IP address/mask of 192.168.0.155 were changed to 192.168.0.1/255.255.255.0.
2025-11-19 00:00:08 dhcp_server<6>: [OMADA]DHCPS initialization succeeded.
2025-11-19 00:00:20 dhcp_server<6>: [OMADA]DHCPS initialization succeeded.
2025-11-19 00:00:23 logger<5>: [OMADA]The LAN(LAN) IP address/mask of 192.168.0.155 were changed to 192.168.0.1/255.255.255.0.
2025-11-19 00:00:46 switch<5>: 55: The physical connection status of [WAN6] was up.
2025-11-19 00:00:48 dhcp_client<5>: [OMADA]WAN1: DHCP client sending DHCP-DISCOVERY timeout.
2025-11-19 00:00:48 dhcp_client<5>: 55 failed to obtain the IP address for WAN1 because no response from the server.
2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN255: The online detection result of [WAN2] was offline.
2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN255: The online detection result of [WAN2] was offline.
2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN755: The online detection result of [WAN7] was offline.
2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN755: The online detection result of [WAN7] was offline.
2025-11-19 00:01:07 online_dection<5>: [OMADA][MARK]WAN155: The online detection result of [WAN1] was offline.
2025-11-19 00:01:08 online_dection<5>: [OMADA][MARK]WAN155: The online detection result of [WAN1] was offline.
2025-11-19 00:02:17 sntp<4>: Time renew failed, connecting NTP server timeout.
root@ER706W-4G:/tmp/log#
这个里面的空行的情况,好像现在用宏也会炸!!void
loggerk_reg(unsigned int module_id, unsigned int info_id, ...)
{
syslog(0,"!!!in loggerk_reg!!!.\n");
char buf[_LOG_BUF_MAX_SIZE];
char *msg = buf;
int rlen = _LOG_BUF_MAX_SIZE;
int len;
va_list args;
unsigned int fmt;
unsigned int pid;
#ifdef __KERNEL__
/*printk("%s,%d:module_id:%d,info_id:%d\n",__FUNCTION__,__LINE__,module_id,info_id);*/
pid = 0;
#else
pid = getpid();
#endif
len = snprintf(msg, rlen, _LOG_TP_IDENT "%u,%u[%u]: ",
module_id, info_id, pid);
#ifdef __KERNEL__
/*printk("%s,%d:rlen:%d,len:%d\n",__FUNCTION__,__LINE__,rlen,len);*/
#endif
if (len < 0 || len >= rlen)
{
syslog(0,"!!!in loggerk_reg,rlen.\n");
return;
}
msg += len;
rlen -= len;
va_start(args, info_id);
#define _XPRINTF(fmt, ...) \
do { \
len = snprintf(msg, rlen, fmt _ARGS_SEP_STR, \
##__VA_ARGS__); \
if (len < 0 || len >= rlen) \
{ \
return; \
} \
msg += len; \
rlen -= len; \
} while (0)
syslog(0,"!!!in loggerk_reg,behand for!!!.\n");
for (fmt = va_arg(args, unsigned int);
fmt != LP_END;
fmt = va_arg(args, unsigned int))
{
switch (fmt)
{
case LP_STRING:
_XPRINTF("%s", va_arg(args, char *));
syslog(0,"!!!in loggerk_reg,in LP_STRING.\n");
break;
case LP_INT32:
_XPRINTF("%d", va_arg(args, int));
break;
case LP_UINT32:
_XPRINTF("%u", va_arg(args, unsigned int));
break;
case LP_UINT32HEX:
_XPRINTF("%x", va_arg(args, unsigned int));
break;
case LP_IPV4:
{
unsigned int ipv4 = va_arg(args, unsigned int);
_XPRINTF("%d.%d.%d.%d",
(ipv4 >> 24) & 0xFF,
(ipv4 >> 16) & 0xFF,
(ipv4 >> 8) & 0xFF,
(ipv4 >> 0) & 0xFF);
}
break;
case LP_MARK:
_XPRINTF("%s%s", _LOG_OMADA_MARK_HEAD, va_arg(args, char *));
break;
case LP_INTERVAL:
_XPRINTF("%s%d", _LOG_OMADA_INTERVAL_HEAD, va_arg(args, unsigned int));
break;
default:
syslog(0,"!!!in loggerk_reg,defult.\n");
return;
}
}
syslog(0,"!!!in loggerk_reg,fmt is%s.\n", msg);
msg[-1] = '\0';
va_end(args);
#ifdef __KERNEL__
printk(KERN_DEFAULT "%s\n", buf);
#else
syslog(0, "%s\n", buf);
#endif
}我往loggerk_reg里加了点打印, syslog(0,"!!!in loggerk_reg,fmt is%s.\n", msg);这行没有输出