天天看點

正式環境log日志配置

log日志,通常是根系統或者某些軟體有關的相關記錄,友善使用者了解系統或者軟體的運作情況,它并沒有固定的格式,通常是文本檔案,可以用記事本來 檢視内容。log生成的時候,檔案名會考慮的有意義一點,比如:51yip.com.access.log通路記錄日志,51yip.com.error.log錯誤日志,mail.log郵件日志等等,基本上可以從名子上看出這個log日志是幹什麼用的。

拉科頓"跑"失良機的故事,我想學理工類的童鞋,都知道,高中實體課本裡面有的。說是的拉科頓研究電磁感應時,來回跑的時候過程中,錯失了看到指針便轉的機會,如果當時有錄影機的話,就可以記錄下指針每一時刻的運動情況,那麼電磁感應的發現者就要換人了。哈哈。

上面的例子告訴我們,記錄log的重要性。這就要求我們,寫代碼的時候,在有必要加log的地方,要産生log日志;裝軟體的時候,以及軟體運作時,都要記錄下軟體的運作情況的log日志。

錯誤回顯,一般常用語開發模式,友善檢視,但錯誤回顯可以暴露出非常多的敏感資訊,為攻擊者下一步攻擊提供便利。在正式環境下,把錯誤資訊記錄在日志裡。正好可以關閉錯誤回顯

例如:

1,apache的配置裡面有産生log日志的地方

正式環境log日志配置

errorlog        logs/www.test.com-error_log  

customlog       logs/www.test.com-access_log common  

如果出現了什麼意外情況的話,這二個日志檔案肯定能給你很大的幫助。

在my.cnf或my.ini通過 log-slow-queries[=file_name]

在mysqld 程序啟動時,指定--log-slow-queries[=file_name]選項

有了log日志後,我們就可以用分析工具來分析查詢慢的原因, 包括執行頻率, 資料量, 查詢消耗等,我們就可以針對實際情況做出優化 。

mysql有一個功能就是可以log下來運作的比較慢的sql語句,預設是沒有這個log的,為了開啟這個功能,就要到 my.ini 或者 my.cnf 的 [mysqld] 增加如下内容 

配置檔案裡面修改,需增加如下幾行

正式環境log日志配置

long_query_time = 2  

log-slow-queries = /usr/local/mysql/log/slow.log   

log_queries_not_using_indexes =on  #記錄沒有使用索引的查詢   

    long_query_time 是指執行超過多久的sql會被log下來,這裡是2秒。 

    log-slow-queries 設定把日志寫在那裡,為空的時候,系統會給慢查詢日志賦予主機名,并被附加slow.log

mysql各版本之間有所差別,通過以下指令修改

正式環境log日志配置

show global variables;   -- 查詢變量  

show variables like '%slow%'; -- 查詢變量   

set global log_output='table';  -- 輸出到表  

set global log=on;                     -- 打開所有指令執行記錄功能general_log, 所有語句: 成功和未成功的.  

set global long_query_time=2;  -- 設定long_query_time  

set global log_queries_not_using_indexes=on;-- 記錄未使用索引的sql語句  

-- 查詢sql執行記錄  

select * from mysql.slow_log order by 1;     -- 執行成功的:慢查詢語句,和未使用索引的語句  

select * from mysql.general_log order by 1;  -- 所有語句:  成功和未成功的.   

3,我們經常會用到crontab來定時跑一些程式,以php為例,這個時候也要産生日志

不然你怎麼詳細的知道程式的運作情況呢。可以用fopen來産生也一個log,或者是error_log()來産生log,方法有很多。生成檔案後,把要記錄log資訊的地方,加到檔案裡面去,這樣你就可以知道php程式的運作情況了。就根你在代碼按插了間諜差不多。

在php裡面的設定sql語句

正式環境log日志配置

$sql = '/* file: ' . __file__ . ', line: ' . __line__ . ' */ ' . "select managerid,managername,realname from manager where isbad=0 and managerid={$managerid}";  

有了sql注釋,我們能夠迅速定位到卡死系統的sql語句是哪個php檔案的哪一行。然後到那裡仔細推敲代碼,解決問題。

正式環境log日志配置

/* file: /var/www/jjwxc.net/www.jjwxc/backend/sms.php, line: 258 */ select managerid,managername,realname from manager where isbad=0 and managerid=1   

要寫日志的東西很多,郵件伺服器,負載均衡伺服器等等,隻要養成了良好的寫日志的習慣,我們在遇到緊急問題時,才有所依據,才知道從什麼地方解決問題,你可不要"跑"失良機哦。

4.php檢視錯誤log

正式環境log日志配置

log_errors = on  

error_log = /tmp/logs/php/phperror.log //chmod 777  

 如果是在linux 下,則可以使用如下方式檢視log檔案

正式環境log日志配置

tail -n 20 /tmp/logs/php/phperror.log  

 在php代碼中如何記錄log,在php官方文檔中有個函數error_log()