日志存储策略

添加

可以在代理界面左下角菜单中点击”日志策略”进入策略列表:storage1.png

点击”添加新日志策略”:storage2.png其中,可以选择你想要的存储类型:

  • 文件 - 可以将日志输出到一个或一组文件中
  • ElasticSearch - 可以将日志输出到ElasticSearch中
  • MySQL - 可以将日志输出到MySQL的一个或一组表中
  • TCP Socket - 可以将日志输出到TCP Socket中,这样你就可以自己写一个TCP服务来接收这些日志
  • 命令行输入流 - 可以将日志输出到一个命令的输入流中(stdin),这样你可以通过读取输入流来接收这些日志如果使用了模板,可以在这里查看支持的模板变量

填写完相关信息,点底部的”保存”按钮即可保存。

使用

可以在代理服务或路径规则中使用这个日志策略:storage3.png如上图示,勾选并保存即可。

命令输入流示例

使用PHP读取日志

写一个log.php放在当前用户可以访问的一个目录下,比如/root/log.php,然后写入内容:

  1. <?php
  2. // test command storage
  3. // open access log file we want to write logs
  4. $fp = fopen("/tmp/teaweb-command-storage.log", "a+");
  5. // read access logs from stdin
  6. $stdin = fopen("php://stdin", "r");
  7. while(true) {
  8. if (feof($stdin)) {
  9. break;
  10. }
  11. $line = fgets($stdin);
  12. // write to access log file
  13. fwrite($fp, $line);
  14. }
  15. // close file pointers
  16. fclose($fp);
  17. fclose($stdin);
  18. ?>

然后配置日志策略:storage4.png其中:

  • 存储类型 - 选择”命令行输入流”
  • 存储格式 - 可以选JSON或者是一个字符串模板
  • 可执行命令 - 这里是你服务器上已经安装的命令
  • 参数 - 执行命令附加的参数
  • 工作目录 - 执行命令时所在的目录,通常可以不填