当前位置:首页>Linux>Arm Linux 日志方案 - syslog 远程转发 、 local0/local1 分文件

Arm Linux 日志方案 - syslog 远程转发 、 local0/local1 分文件

  • 2026-08-18 23:11:25
Arm Linux 日志方案 - syslog 远程转发 、 local0/local1 分文件

引言

上一篇讲了 syslog 的 C 接口,并埋了个伏笔:多进程示例里父进程用 LOG_LOCAL0、子进程用 LOG_LOCAL1。光在代码里分好设施(facility)还不够——真正决定"这些日志去哪个文件、要不要发到中心服务器"的,是系统日志守护进程的配置文件。

Arm Linux 上跑完整 rsyslogd 的板子(Yocto/Debian 系),份配置是 /etc/rsyslog.conf。把 local0/local1 落入不同文件,再把全部日志可靠地转发到远程日志服务器。


一、rsyslog 配置"三段式"

rsyslog 配置文件由三部分组成:

  1. 模块加载(Modules)imuxsock 接收 /dev/log 上的应用日志,imklog 接收内核日志。
  2. 全局指令(Global Directives)$WorkDirectory$FileOwner 等。
  3. 规则(Rules)设施.级别  动作,一行一条。

选择器(selector)写法:facility.priority,例如 local0.info 表示 local0 设施、info 及以上(注意:级别是"及以上")。* 是通配。

动作(action)可以是:

  • 文件路径:/var/log/parent.log
  • 远程主机:@host:port(UDP)、@@host:port(TCP)
  • 用户、*(控制台) 等

rsyslog 的规则是从上到下逐条匹配执行


二、模板 A:传统格式(兼容老 BusyBox/旧发行版)

rsyslog 的规则是从上到下逐条匹配执行,规则顺序:先远程转发 → 再写本地文件 → 最后 stop,同时优化队列作用范围(仅给转发加异步队列,不影响本地写文件性能)。

如果板子是老派 rsyslog(或习惯看传统写法),直接用这套:

# /etc/rsyslog.conf  —— 传统格式模板# ---------- 1. 模块 ----------$ModLoad imuxsock   # 监听 /dev/log,接收应用 syslog()$ModLoad imklog     # 接收内核日志# ---------- 2. 全局 ----------$WorkDirectory /var/spool/rsyslog   # 队列工作目录(转发缓存用)$FileOwner root$FileCreateMode 0644# ---------- 3. 通用系统日志(排除 local0/local1,避免重复)----------*.info;mail.none;authpriv.none;cron.none;local0.none;local1.none   /var/log/messages# ---------- 4. 按设施分文件(对接上篇多进程示例)----------local0.*    /var/log/parent.loglocal1.*    /var/log/child.log# ---------- 5. 远程转发(TCP,全部日志)----------*.*   @@192.168.1.100:514# ---------- 6. 内核/紧急日志落本地,不转发也行 ----------*.emerg   *

要点说明:

  • 第 4 行 local0.none;local1.none 让 local0/local1不再进/var/log/messages,只进各自专用文件,避免一份日志写两处。
  • 第 5 行 @@ 双 at 表示 TCP;要 UDP 改成单个 @*.* @192.168.1.100:514
  • 远程转发是"尽力而为",网络断了日志可能丢。要可靠,看模板 B。

修改后内容:

# /etc/rsyslog.conf configuration file for rsyslog## For more information install rsyslog-doc and see# /usr/share/doc/rsyslog-doc/html/configuration/index.html##################### MODULES #####################module(load="imuxsock"# provides support for local system loggingmodule(load="imklog")   # provides kernel logging support#module(load="immark")  # provides --MARK-- message capability# 本机作为发送端无需开启 imtcp/imudp;仅接收远程日志时才打开#module(load="imtcp")#input(type="imtcp" port="514")#module(load="imudp")#input(type="imudp" port="514")############################### GLOBAL DIRECTIVES ###############################$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat$FileOwner root$FileGroup adm$FileCreateMode 0640$DirCreateMode 0755$Umask 0022$WorkDirectory /var/spool/rsyslog$IncludeConfig /etc/rsyslog.d/*.conf################### RULES ##################### First some standard log files.  Log by facility.#auth,authpriv.*      /var/log/auth.log*.*;auth,authpriv.none    -/var/log/syslog#cron.*        /var/log/cron.logdaemon.*      -/var/log/daemon.logkern.*        -/var/log/kern.loglpr.*        -/var/log/lpr.logmail.*        -/var/log/mail.loguser.*        -/var/log/user.log## Logging for the mail system.#mail.info      -/var/log/mail.infomail.warn      -/var/log/mail.warnmail.err      /var/log/mail.err# ============================================================# 【修正】local0 / local1 处理逻辑# 顺序:先转发 → 再写本地文件 → 最后 stop 终止# ============================================================# 1. 远程 TCP 转发(必须放在 stop 之前)# 仅给转发动作配置异步磁盘队列,远端不可达时缓存本地、恢复后自动重发$ActionQueueType LinkedList$ActionQueueFileName fwd_local01$ActionQueueMaxDiskSpace 1g$ActionQueueSaveOnShutdown on$ActionQueueDiscardMark 50000$ActionQueueDiscardSeverity 8# ============================================================# 【新增】远程转发规则# 把整机的所有日志(含 local0/local1 如果你想一起转)发到日志服务器# 语法:#   @@host:port  → TCP#   @host:port   → UDP# 下面给两种写法,按需要选一个# ============================================================# 写法 A:转发全部日志(含 local0/local1),推荐*.* @@logserver.example.com:514# 写法 B:只转发 local0 和 local1(更细粒度)#local0.*  @@logserver.example.com:514#local1.*  @@logserver.example.com:514# 写法 C:走 UDP(不保证送达,但开销小)#*.* @logserver.example.com:514# 重置队列模式,不影响后续本地文件写入$ActionQueueType Direct# 2. 写入本地独立文件local0.*  /var/log/local0.loglocal1.*  /var/log/local1.log# 3. 终止处理,避免日志继续流入 syslog/messages 造成重复local0.*  stoplocal1.*  stop## Some "catch-all" log files.#*.=debug;\  auth,authpriv.none;\  news.none;mail.none;\  local0.none;local1.none  -/var/log/debug*.=info;*.=notice;*.=warn;\  auth,authpriv.none;\  cron,daemon.none;\  mail,news.none;\  local0.none;local1.none  -/var/log/messages## Emergencies are sent to everybody logged in.#*.emerg        :omusrmsg:*

生效指令:

# 1. 检查配置语法(务必先跑,避免改坏起不来)rsyslogd -N1 -f /etc/rsyslog.conf# 输出 "rsyslogd: End of config validation run. Bye." 表示 OK# 2. 重启服务systemctl restart rsyslog# 3. 验证logger -p local0.info "test local0 message"logger -p local1.warn "test local1 warning"tail /var/log/local0.logtail /var/log/local1.log# 4. 验证远程转发(在日志服务器上抓)# 服务器端开 TCP 514 监听看能否收到tcpdump -i eth0 port 514# 或在服务器端 rsyslog 开 imtcp 后看 /var/log/syslog

三、模板 B:RainerScript 现代格式(推荐)

新版本 rsyslog(v8+,Yocto/Debian 新版默认)推荐用 module() / action() 结构,可读性和可控性都更好,转发还能加磁盘辅助队列,网络抖动也不丢日志:

# /etc/rsyslog.conf  —— RainerScript 现代格式模板# ---------- 1. 模块 ----------module(load="imuxsock")   # 应用日志 (/dev/log)module(load="imklog")     # 内核日志# ---------- 2. 全局 ----------global(workDirectory="/var/spool/rsyslog")# ---------- 3. 通用系统日志(排除 local0/local1)----------*.info;mail.none;authpriv.none;cron.none;local0.none;local1.none    action(type="omfile" file="/var/log/messages")# ---------- 4. 按设施分文件 ----------local0.*    action(type="omfile" file="/var/log/parent.log" createDirs="on")local1.*    action(type="omfile" file="/var/log/child.log" createDirs="on")# ---------- 5. 远程转发(TCP + 可靠队列)----------*.* action(type="omfwd"           target="192.168.1.100"           port="514"           protocol="tcp"           action.resumeRetryCount="-1"# -1 = 无限重试,断网不丢           action.resumeInterval="10"# 每 10s 重试一次           queue.type="linkedList"# 内存队列           queue.saveOnShutdown="on"# 关机落盘,防丢           queue.maxDiskSpace="1g"# 磁盘队列上限           queue.fileName="fwdq")            # 磁盘队列文件名前缀# ---------- 6. 紧急日志广播给在线用户 ----------*.emerg   :omusrmsg:*

为什么模板 B 的转发更稳queue.type="linkedList" + queue.saveOnShutdown="on" + queue.fileName 组成"内存队列 + 断电落盘"的磁盘辅助队列。中心服务器宕机期间,日志先缓存在板子 /var/spool/rsyslog 里,action.resumeRetryCount="-1" 保证恢复后自动补传——这对工业网关断网场景非常关键。

💡 想用 UDP?把 protocol="tcp" 改成 protocol="udp",并去掉磁盘队列(UDP 本身不可靠)。


四、和上篇多进程程序对接

回顾上一篇 syslog_fork.c:父进程 openlog("syslog_parent", LOG_PID, LOG_LOCAL0),子进程 openlog("syslog_child", LOG_PID, LOG_LOCAL1)。套用上面的配置:

# 编译运行上篇的程序后:./syslog_fork# 父进程日志(LOG_LOCAL0)落在:tail -f /var/log/parent.log# 子进程日志(LOG_LOCAL1)落在:tail -f /var/log/child.log# 同时全部日志(含 local0/local1)被转发到 192.168.1.100:514

一行 logger 也能快速验证设施路由:

logger -t syslog_parent -p local0.info "test from shell: parent line"logger -t syslog_child  -p local1.warning "test from shell: child warn"

五、别忘了日志轮转:logrotate

rsyslog 自己不轮转日志文件,得靠 logrotate。给两个专用日志加配置:

# /etc/logrotate.d/armapp/var/log/parent.log /var/log/child.log {    missingok    notifempty    size 10M           # 超过 10MB 切    rotate 5            # 保留 5 份    compress    delaycompress    postrotate        /usr/bin/killall -HUP rsyslogd  2>/dev/null || true# 通知重新打开文件    endscript}

⚠️ 不配 logrotate,板子 /var/log 迟早写满,轻则日志停写,重则业务分区爆盘。工业设备务必配上。

新增 logrotate 轮转配置

在 /etc/logrotate.d/ 目录下创建配置文件(例如 local-syslog),专门管理 local0.log 和 local1.log,参数与系统默认 rsyslog 轮转规则保持一致,便于统一维护。

配置文件路径:/etc/logrotate.d/local-syslog

cat > /etc/logrotate.d/local-syslog << 'EOF'/var/log/local0.log /var/log/local1.log {    weekly    rotate 8    missingok    notifempty    compress    delaycompress    create 0640 root adm    sharedscripts    postrotate        systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true    endscript}EOF

参数说明

参数
作用
weekly
每周轮转一次;若日志量较大,可改为 daily 每天轮转
rotate 8
保留 8 份历史日志(对应 8 周);按需调整数量
missingok
日志文件不存在时不报错,避免定时任务异常
notifempty
日志文件为空时不执行轮转
compress
轮转后的历史日志用 gzip 压缩,节省磁盘空间
delaycompress
延迟压缩:刚轮转生成的 .1 文件不压缩,下次轮转再压缩为 .2.gz,方便查看最近的历史日志
create 0640 root adm
轮转后创建新的空日志文件,权限、属主与 rsyslog 全局配置完全一致
sharedscripts
多个日志文件共用一套脚本,postrotate 仅执行一次
postrotate ... endscript
轮转完成后给 rsyslog 发送 HUP 信号,让其重新打开日志文件句柄;必须配置,否则 rsyslog 会继续写入已被重命名的旧文件

组合:每日保底轮转 + 超大小提前触发

这是生产环境最常用的模式:每天至少轮转1次,单日日志超出指定大小时提前轮转,兼顾归档规律性和大文件管控。 使用 daily + maxsize 组合实现,逻辑:

  • 到每日执行周期时,无论大小都执行一次轮转
  • 同一个周期内(当天),如果日志体积超过 maxsize,下次 logrotate 运行时会提前触发轮转

完整配置(覆盖写入 /etc/logrotate.d/local-syslog

# 写入干净的配置(按天+按大小组合模式)cat > /etc/logrotate.d/local-syslog << 'EOF'/var/log/local0.log /var/log/local1.log {    daily    maxsize 100M    rotate 30    missingok    notifempty    compress    delaycompress    create 0640 root adm    sharedscripts    postrotate        systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true    endscript}EOF

核心参数说明

  • daily:按天为轮转周期,保底每天轮转一次
  • maxsize 100M:单文件超过 100MB 时提前轮转,可根据实际磁盘情况调整为 50M/200M 等
  • rotate 30:保留 30 份历史日志,对应约 30 天的归档(如果当天多次轮转,保留份数会对应增加)
  • 其余参数(压缩、权限、重载信号等)

可选:纯大小触发模式(不按天)

如果不需要每日固定轮转,仅当日志大小达到阈值才轮转,不受时间限制,使用 size 参数替代 daily + maxsize

/var/log/local0.log /var/log/local1.log {    size 100M    rotate 30    missingok    notifempty    compress    delaycompress    create 0640 root adm    sharedscripts    postrotate        systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true    endscript}

注意:size 模式下,如果日志一直没达到阈值,可能长期不轮转,不利于日志归档管理。


注意事项:大小触发的执行频率

logrotate 本身是被动触发的,默认通过系统 cron 每天执行一次(脚本位于 /etc/cron.daily/logrotate)。

  • 默认频率下,maxsize/size 一天最多检查一次,即使日志半天就涨到阈值,也要等到次日 cron 执行才会轮转
  • 如果希望大小触发更灵敏(比如每小时检查一次),可以调高 logrotate 的执行频率:

方法:增加每小时执行一次 logrotate

# 复制每日执行脚本到每小时目录cp /etc/cron.daily/logrotate /etc/cron.hourly/logrotate

执行后系统每小时都会运行一次 logrotate,大小阈值的检测延迟会缩短到 1 小时以内。


验证与生效

logrotate 默认通过系统 cron 每日自动执行,无需额外启动服务。配置完成后可手动验证:

  1. 语法调试(不实际执行,仅检查配置是否正确)

    logrotate -d /etc/logrotate.d/local-syslog
  2. 强制手动轮转一次(验证实际效果)

    logrotate -f /etc/logrotate.d/local-syslog
  3. 检查结果

    ls -l /var/log/local*.log*

    正常会看到 local0.log.1local1.log.1 等轮转文件,且新的 local0.log/local1.log 权限为 0640 root adm


六、Arm Linux 调试与注意

  1. 配置语法校验(改完先跑,别直接重启):
    rsyslogd -N1     # 只检查配置,不启动;有错直接报出行号
  2. 改完生效
    kill -HUP $(cat /var/run/rsyslogd.pid)   # 平滑重载,不丢连接# 或systemctl restart rsyslog
  3. 确认守护进程在跑
    ps | grep rsyslogd
    板子若是 BusyBoxbusybox-syslogd),不支持本篇这套 rsyslog 语法!它只认简单的 /etc/syslog.conf(格式为 *.INFO /var/log/messages 这类),没有远程转发/磁盘队列能力。需要高级功能请上完整 rsyslog 包。
  4. 磁盘空间敏感:低端 Arm 板 eMMC/SD 卡小,远程转发能大幅减少本地存储压力;本地只留关键日志,详细日志全走中心服务器。
  5. 时区:日志时间戳依赖板子时区设置,跨时区集中收集时建议在中心服务器统一处理。

总结

  • ✅ 应用侧用 LOG_LOCAL0~7 区分模块/进程,配置文件侧用 localN.* 文件 分流。
  • ✅ 通用规则记得加 local0.none;local1.none,避免一份日志写两处。
  • ✅ 远程转发生产用 TCP + 磁盘辅助队列(resumeRetryCount=-1 + saveOnShutdown),断网不丢。
  • ✅ 改配置先 rsyslogd -N1 校验,再 kill -HUP 平滑重载。
  • ✅ 必配 logrotate,否则 /var/log 写满拖垮整机。
  • ❌ BusyBox syslogd 不支持 rsyslog 语法与高级转发,需要请换完整 rsyslog。
  • ❌ 远程转发和本地落盘只进行了二选一 —— 两者互补:本地保底,远程集中。

如果觉得不错,欢迎 点赞、收藏、转发 ,如果想第一时间收到推送,也可以给个星标⭐~~

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-22 02:51:52 HTTP/2.0 GET : https://f.mffb.com.cn/a/507376.html
  2. 运行时间 : 0.154246s [ 吞吐率:6.48req/s ] 内存消耗:4,771.16kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b3e1f5a8070e524f632962be1f1aa479
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000765s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000702s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000296s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000291s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000502s ]
  6. SELECT * FROM `set` [ RunTime:0.000202s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000617s ]
  8. SELECT * FROM `article` WHERE `id` = 507376 LIMIT 1 [ RunTime:0.000667s ]
  9. UPDATE `article` SET `lasttime` = 1787338312 WHERE `id` = 507376 [ RunTime:0.005064s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000241s ]
  11. SELECT * FROM `article` WHERE `id` < 507376 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000407s ]
  12. SELECT * FROM `article` WHERE `id` > 507376 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000416s ]
  13. SELECT * FROM `article` WHERE `id` < 507376 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000814s ]
  14. SELECT * FROM `article` WHERE `id` < 507376 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000748s ]
  15. SELECT * FROM `article` WHERE `id` < 507376 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001558s ]
0.155869s