我正在尝试找出将日志记录添加到实用程序类中的静态方法的最佳方法。我正在使用 log4php 进行日志记录。我想做的是:
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = Logger::getLogger( "testutil" );
public static function utilMethod1()
{
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
但是,我无法在 PHP 中执行此操作,并且在初始化$log
静态变量时出现语法错误。我能弄清楚如何做到这一点的唯一方法是添加init()
对每个静态方法的调用:
<?php
require_once WEBSITE_BASE_DIR . "/log4php/Logger.php";
class TestUtil
{
private static $log = NULL;
private static function init()
{
if (self::$log == NULL)
{
self::$log = Logger::getLogger( "testutil" );
}
}
public static function utilMethod1()
{
self::init();
self::$log->trace("Entering utilMethod1");
// ... do stuff ...
self::$log->trace("Exiting utilMethod1");
}
public static function utilMethod2()
{
self::init();
self::$log->trace("Entering utilMethod2");
// ... do stuff ...
self::$log->trace("Exiting utilMethod2");
}
}
但这似乎是过多的冗余代码,因为我有许多带有许多静态方法的实用程序类。有一个更好的方法吗?