2012-11-21 103 views
2

我使用log4php來編寫文件日誌。下面是配置文件:log4php:無法創建日誌文件

<?xml version="1.0" encoding="utf-8" ?> 
<configuration xmlns="http://logging.apache.org/log4php/"> 
    <appender name="default" class="LoggerAppenderDailyFile"> 
     <layout class="LoggerLayoutPattern"> 
      <param name="conversionPattern" value="%date %logger %-5level %msg%n" /> 
     </layout> 
     <param name="file" value="/path/to/log/register-%s.log" /> 
     <param name="datePattern" value="Y-m-d" /> 
     <param name="append" value="true" /> 
    </appender> 
    <root> 
     <level value="info" /> 
     <appender_ref ref="default" /> 
    </root> 
</configuration> 

這裏是在PHP中的初始化代碼:

require_once('/path/to/log4php/Logger.php'); 
require_once('/path/to/log4php.xml'); 
$logger = Logger::getLogger(basename(__FILE__)); 
$logger->info('Testing'); 

該文件夾的權限設置爲777(這是一個Ubuntu Linux操作系統的服務器),但日誌文件沒」創造。我如何調試log4php?

+0

你有沒有嘗試使用'Logger :: configure('/ path/to/log4php.xml');'而不是require? – arma

+0

剛剛嘗試過。沒有運氣。日誌仍然不會創建。 – Raptor

+0

多數民衆贊成在超級奇怪,我只是下載log4php,並用你的代碼與'Logger :: configure('/ path/to/log4php.xml');'insead需要在調用'$ logger = Logger :: getLogger basename(__ FILE __));'和我得到了成功的日誌寫入。 error_logs說什麼? – arma

回答

2

與配置調用將是正確的方法:

require_once('/path/to/log4php/Logger.php'); 
Logger::configure('/path/to/log4php.xml'); 
$logger = Logger::getLogger(basename(__FILE__)); 
$logger->info('Testing'); 

由於西瓦猛禽指出,首先要做的是檢查日誌權限問題。

+0

這不適用於我從命令行腳本。也沒有錯誤。我看不到正在創建的日誌文件。 – Volatil3

0

試試這一次

看起來比較複雜,在第一,但事實並非如此。

main.php

require_once('/path/to/log4php/Logger.php'); 
Logger::configure('log4php.xml'); 

Class Log 
{ 
    private $log; 

    public function __construct() 
    { 
     $this->log = Logger::getLogger(__CLASS__); 
    } 
    public function myLog() 
    { 
     //this prints your data. 
     $this->log->info("Hello, this is log here"); 
    } 
} 

//simply call the function 
$log=new Log(); 
$log->myLog(); 

log4php.xml

<?xml version="1.0" encoding="UTF-8"?> 
<log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/"> 
    <appender name="fileappender" class="LoggerAppenderFile"> 
     <layout class="LoggerLayoutSimple" /> 
     <param name="file" value="/path/to/log/register-%s.log" /> 
     <!-- <param name="append" value="true" /> --> 
    </appender> 
    <logger name="Log"> 
     <appender_ref ref="fileappender" /> 
    </logger> 
</log4php:configuration> 

注意:不要忘了給777權限的文件夾:)

+0

感謝您的回答,但很少發現錯誤。永遠不會永遠不會使用777權限(您不想創建安全漏洞,對吧?)。另外就面向對象的方法而言,永遠不要在你的主邏輯文件中放置一個類。使用一個單獨的文件來存儲你的班級。結論:重新考慮你的邏輯。 – Raptor

+0

@Raptor它只是一個例子。但感謝你的建議 –