>[info]高性能的php日志系統 --seaslog,學習使用之前我們首先要搞明白,日志能給我們解決什么問題
- 自己搭建web日志系統,可以看項目中是咋弄的
- 什么是日志系統??
1、記錄系統運行時的信息
2、記錄日志、應用程序、安全日志
3、日志功能不應該影響到用戶的正常使用
- 為什么需要日志系統??
1、了解系統運行情況
2、記錄用戶操作信息
3、收集數據(如 500錯誤,出現了多少次)
- 為什么選擇seaslog??
1、高性能(C語言寫的)
2、無需配置(先寫閃存,達到一定量才寫到文件里)
3、功能完善使用簡單
- 實際項目中使用seaslog的場景??
1、記錄有人來了
2、記錄用戶看沒看到,看到后記錄看到哪些
...
[toc]
## :-: **Win安裝**
>[info] 下載擴展地址:https://pecl.php.net/package/SeasLog/1.6.9/windows
- 根據PHP版本 是否線程安全 進行選擇 這些都可以在phpinfo里查得到
- 下載之后 把里面的php_seaslog.dll拷貝到PHP的安裝目錄下的ext里
- 然后打開php.ini進行配置
extension=php_seaslog.dll
## :-: **linux的安裝**
>[warning]他是php的一個擴展,不是普通類庫
>[info]http://pecl.php.net/ 安裝php擴展來這個網站找包,或直接訪問:https://pecl.php.net/package/seaslog


1、解壓,切換進去
2、輸入phpize
3、./configure --with-php-config=<span style="color:blue;">/www/server/php/54/bin/php-config</span> (你php-config所在的絕對路徑)
4、make && make install

5、修改php.ini,最后一行加入<span style="color:blue;">extension=seaslog.so</span>

>[warning]打印phpinfo()在瀏覽器查看是安裝成功了,但是在linux上執行php -m 沒有,我暫時也不知道是為什么,希望知道的大佬給我留言補充下
6、配置 seaslog
~~~
配置詳解:http://php.net/manual/en/seaslog.configuration.php
seaslog.default_basepath = /home/wwwlogs/seaslog #默認log根目錄 記著 是目錄
seaslog.default_logger = default #默認日志目錄 位于default_basepath目錄下的小目錄
seaslog.disting_type = 1 #是否以type分文件 1是 0否(默認) 若是 則每種級別都會單獨生成日志文件
seaslog.disting_by_hour = 0 #是否每小時劃分一個文件 1是 0否(默認) 若是 則每個小時都會生成新文件
seaslog.use_buffer = 1 #是否啟用buffer 1是 0否(默認) 默認關閉,當開啟此項時,日志預存于內存,當請求結束時(或異常退出時)一次寫入文件。
seaslog.buffer_size = 100 #buffer中緩沖數量 默認0(不使用)
seaslog.level = 0 #記錄日志級別 默認0(所有日志)
seaslog.trace_error = 1
seaslog.trace_exception = 0
seaslog.default_datetime_format = "Y:m:d H:i:s
~~~
第二條配置seaslog.default_logger我選擇在項目的入口文件中再指定Seaslog::setLogger('...')
這樣就可以每個項目一個日志目錄了
7、SeasLog 日志8個級別
debug -> info -> notice -> warning -> error -> critical -> alert -> emergency
## :-: **常用方法**

- 這些方法都是靜態方法,可以直接調用。測試時拿瀏覽器訪問,或php -f 要執行的php文件
``` php
basepath:存日志的路徑
設置:Seaslog::setBasePath('/log/base_test');
獲取:Seaslog::getBasePath();
```
``` php
logger:同模塊存到不同路徑下
設置:Seaslog::setLogger('app');
獲取:Seaslog::getLastLogger();
SeasLog::setLogger('ms/normaltest'); //示例
```
``` php
寫日志:
Seaslog::debug('...')
Seaslog::info('...')
SeasLog::info('計費接口結果:' . json_encode($bossResult,JSON_UNESCAPED_UNICODE));
```
``` php
Seaslog::notice('...')
八個級別都可以記錄
日志內容格式為:級別-pid-時間戳-格式化時間-日志內容
```
``` php
讀取日志條數
Seaslog::analyzerCount('{日志級別}');//如果不填參數 則代表統計全部級別
Seaslog::analyzerCount('{日志級別}','20170914');指定統計某一天的日志
```
``` php
讀取日志
Seaslog::analyzerDetail('{日志級別}','20170914');//也有兩個參數 日志級別和指定時間 第一個日志級別參數必填 時間可選
```
``` php
輸出info級別的日志:
echo "<pre>";
print_r(Seaslog::analyzerDetail('info'));
echo "</pre>";
analyzerCount:日志統計
```
## :-: **在框架中使用**
- 某些PHP框架默認為當前控制器命名空間 所以會報Seaslog not found
只需在前面指定根命名空間就OK: \Seaslog::debug('...')
- 第1種:安裝php擴展(win裝win的,linux裝linux的),直接調函數
- 第2種:將該類庫從github上,使用composer或其他手法加載到框架中
然后就和使用普通類庫一樣
思路1、在控制器 直接調用
思路2、改log的配置文件

然后自己封裝(和思路1一樣,也是在控制器或模型的方法中直接調用)

- 雜談
- 開發 & 維護的工作流程
- 新手如何看php手冊 和 框架手冊
- 開發 & 維護的不同點
- 從0到1,搭建新項目的工作流程
- 從1到N,維護的工作流程
- 優化流程
- 生成錯誤日志和慢日志的方法
- 查錯思路
- 怎么快速接手一個項目
- 前端常用知識點
- javascript
- 自己封裝的函數
- 處理數字
- 功能代碼
- 動態添加圖片
- 判斷是手機端還是pc端
- javascript:;是什么意思?怎么用呢
- html & h5
- a標簽中target設置為blank和_blank有什么區別?
- 亂碼
- 提交方式:button標簽 和 input
- 塊元素
- 內聯元素
- h5特有屬性
- h5的localStorage【增、刪、改、查】
- jquery
- 常用方法
- 功能代碼
- 動態刪除圖片
- 一個按鈕,切換2種狀態
- 換膚
- 深入理解(function(){... })();
- json & xml
- json
- 語法速記
- json對象取值
- 字符串、對象、數組的區別
- xml
- [CDATA[%s]]的作用是什么
- 轉義字符
- CDATA 想被xml解析的文本數據
- CDATA 不想被xml解析的文本數據
- 微信小程序
- 其他
- websocket
- 跨域
- css
- 行內 & 內連 & 外連 寫法
- 優先級
- 更加精準的匹配
- 使用百分比如何生效
- php在html、js、jq中的的原生寫法
- *php在html中的語法
- php在js中的語法
- php在jq中的語法
- 正則表達式
- php常用基礎知識(思想為主)
- php為什么是“邊編譯邊運行”
- 冒號、endif、endwhile、endfor使用
- 遞歸思想(速記法)
- cookie和session的理解
- php常用內置(系統)函數
- 常量
- 字符串
- 數組
- 日期時間
- 文件 & 目錄
- 數學
- 程序執行
- 判斷
- 選項和信息(修改配置文件的)
- 錯誤處理 & 日志記錄
- 編碼格式
- session
- IP相關
- 類 & 對象
- 性能
- 其他函數
- 魔術方法
- $_SERVER
- 變量處理
- php自己封裝的一些函數
- 導入、導出、生成文件
- 數組
- 數字
- 字符串
- 其他
- 獲取linux硬件信息
- 常見插件/類庫使用
- 前端-框架/插件
- bootstrap 學習筆記
- layer 學習筆記
- layDate 學習筆記
- 百度ueditor1.4.4.3富文本編輯器
- quill富文本編輯器
- 百度ECharts圖形報表
- webuploader上傳圖片
- 后端類庫
- workerman 聊天室
- QRCODE 二維碼
- redis
- seaslog 日志
- phpspider 爬蟲
- Mailer 發送郵件
- simple_html_dom
- phpstorm使用
- 快捷鍵
- 連接mysql數據庫
- 斷點 + debug調試
- 運行內存不夠
- wamp環境
- yii、laravel、tp、開發自己的php框架
- 看框架源碼的思路
- tp5框架的使用
- 1、助手函數原理解析
- 開發自己的php框架
- 常用的開發思路 和 小功能實現代碼
- 爬蟲思路
- 功能點思路
- tp5判斷是不是異地登錄(簡單版)
- 微信開發,反向代理
- 微信開發,關閉當前頁面
- 消息隊列的實現
- 頁面靜態化
- session串號
- 站內信設計思路
- web在線管理器
- 語言相關(開發有關)
- 接收json(text/xml)格式數據
- 原生文件上傳(狀態碼)
- openssl擴展
- 打印對象 和 遍歷對象
- 使用OB緩存的幾個原則
- CLI模式執行php文件
- foreach時,添加元素 或 修改元素的值
- 功能點 代碼實現
- 生成url目錄樹(沒有pid)
- 多圖上傳(vue傳base64)
- 下載文件,耗時算法
- 生成商品二維碼
- 導出excel
- 搜索
- 阿里大魚發短信
- 使用阿里云oss
- location.href跳轉后,丟失用戶的session
- “\r ” “\r\n” “\t”的區別
- php的配置文件詳解
- 開啟錯誤日志
- 開啟慢日志
- 開啟短標簽
- 分析php-fpm.conf中的request_terminate_timeout參數