Yes you can, but you have to do it manually in your wrapper class. %F
and %L will always return the values from where the logging function
was called. In your case the wrapper.
If you remove %F and %L from the pattern, you can append the location
info you need manually. Something like this:
--begin-----------------------------------------------------------
require 'org.apache.log4php/src/main/php/Logger.php';
class LogWrapper
{
private $logger;
public function __construct()
{
$this->logger = Logger::getLogger("LogWrapper");
}
public function log($message)
{
$trace = debug_backtrace();
$file = $trace[0]['file'];
$line = $trace[0]['line'];
$this->logger->info($message . " (at $file line $line)");
}
}
$wrap = new LogWrapper();
$wrap->log("Hello");
--end-----------------------------------------------------------
Try it out.
Regards,
Ivan
On 10 June 2011 13:46, Mohit Srivastava <[email protected]> wrote:
> Hi Christian,
>
> This is my config file:
>
> <log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/">
> <appender name="default" class="LoggerAppenderDailyFile">
> <param name="file" value="logs/%s.log" />
> <param name="datePattern" value="Ymd" />
> <layout class="LoggerLayoutPattern">
> <param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c:
> %m (%F at %L)" />
> </layout>
> </appender>
>
> <root>
> <level value="DEBUG" />
> <appender_ref ref="default" />
> </root>
>
> </log4php:configuration>
>
> The bold characters are responsible for filename in log file. As it called
> from loggerimplementation.php.
> So, it always show its name, but the real file used loggerimplementation as
> wrapper. So, i want to know , is there any way i can define thing like %F so
> that i can get real file name.
>
> --
> Mohit
>
> On Fri, Jun 10, 2011 at 5:07 PM, Mohit Srivastava
> <[email protected]> wrote:
>>
>> <?php
>>
>> /*
>> Looger.php is included.
>> */
>> require_once('log4php/Logger.php');
>> /*
>> This class is use to generate a log file.
>> */
>> class Loggerimplementation extends Exception{
>> /*
>> Member for logger Object.
>> */
>> private $loggerObj;
>>
>> /*
>> Member for caller class ie class called loggerImplementation class.
>> */
>> private $callerClass;
>> /*
>> Constructor intialize the member caller class.
>> Also configure it with config.xml.
>> */
>> public function __construct($ClassName) {
>> $this->callerClass=$ClassName;
>> if($this->callerClass==NULL)
>> throw new NullValueException('Caller Class Value is NULL');
>>
>> $loggerConfig = 'log4php/xml/config.xml';
>> Logger::configure($loggerConfig);
>>
>> $this->loggerObj = Logger::getLogger($this->callerClass);
>>
>> if($this->loggerObj==NULL)
>> throw new NullValueException('Logger Object Created is NULL');
>> }
>> /*
>> Constructor intialize the member caller class.
>> Also configure it with anotherconfig.xml. This constructor is used for
>> warn, fatal,error cases.
>> */
>> public function __constructlevel($ClassName,$isErrSet) {
>> if($isErrSet)
>> {
>> $this->callerClass=ClassName;
>> if($this->callerClass==NULL)
>> throw new NullValueException('Caller Class Value is
>> NULL');
>>
>> $loggerConfig = 'log4php/xml/config.xml';
>> Logger::configure($loggerConfig);
>>
>> $this->loggerObj = Logger::getLogger($this->callerClass);
>> if($this->loggerObj==NULL)
>> throw new NullValueException('Logger Object Created is
>> NULL');
>> }
>> else
>> {
>> throw new UnexpectedValueException("isErrSet value is wrong");
>> }
>> }
>> /*
>> function used to generate log message. In this , level will be check as it
>> passed as parameter according to which a log file is generated.
>> */
>> public function logMessage($message,$level)
>> {
>>
>> if($message=="null")
>> throw new NullValueException("message cant be null");
>>
>> if($level!="INFO" && $level!="DEBUG" && $level!="WARN" &&
>> $level!="ERROR" && $level!="FATAL")
>> throw new UnexpectedValueException("Invalid value of Log
>> Level");
>> if($level=="DEBUG")
>> $this->loggerObj->debug($message);
>> else
>> if($level=="INFO")
>> $this->loggerObj->info($message);
>> else
>> if($level=="WARN")
>> $this->loggerObj->warn($message);
>> else
>> if($level=="ERROR")
>> $this->loggerObj->error($message);
>> else
>> if($level=="FATAL")
>> $this->loggerObj->fatal($message);
>> }
>> }
>>
>>
>> ?>
>>
>> this is my wrapper.
>>
>>
>> On Fri, Jun 10, 2011 at 4:35 PM, Christian Grobmeier <[email protected]>
>> wrote:
>>>
>>> Hi,
>>>
>>> can you show us the Logging code?
>>>
>>> Esspecially the Logger::getLogger code is of interest.
>>>
>>> Thanks
>>> Christian
>>>
>>> On Fri, Jun 10, 2011 at 12:53 PM, Mohit Srivastava
>>> <[email protected]> wrote:
>>> > Hi all,
>>> >
>>> > I write a wrapper over log4php api named as loggerimplementation.php
>>> >
>>> > Now i faced a problem in log files. When i called a function for
>>> > logging
>>> > defined in loggerimplementation.
>>> >
>>> > Log file generated as:
>>> >
>>> > 2011-06-10 10:49:17 [INFO] Log4phpTest: Hello (at
>>> > C:\xampp\htdocs\logger\Loggerimplementation.php line 74)
>>> > 2011-06-10 10:50:08 [INFO] Log4phpTest: Hello (at
>>> > C:\xampp\htdocs\logger\Loggerimplementation.php line 74)
>>> > 2011-06-10 11:04:01 [INFO] Log4phpTest: Hello (at
>>> > C:\xampp\htdocs\logger\Loggerimplementation.php line 78)
>>> >
>>> > Now , as you can see %F will always show wrapper file name coz it
>>> > always
>>> > called from there. But I want real file name which one used this
>>> > wrapper.
>>> >
>>> > So please suggest me the way for this.
>>> >
>>> > Or
>>> > tell me from where %F details i can get?
>>> >
>>> > Waiting for reply.
>>> >
>>> > --
>>> > Mohit
>>> >
>>>
>>>
>>>
>>> --
>>> http://www.grobmeier.de
>>
>
>