2012-02-08 7 views
1

Est-ce que quelqu'un sait s'il est possible de définir un fuseau horaire dans la configuration de la bibliothèque log4php?log4php et timezone

Je n'ai vu aucune information à ce sujet dans le official docs, mais log4j l'a implémenté.

En ce moment, je me fonde sur la fonction de php * date_default_timezone_set * faire l'affaire, mais je voulais laisser log4php pour gérer cela sur son propre ... Je me demande s'il y a une liste de choses à faire pour ce ou nous sommes censés compter sur la fonction intégrée par nous-mêmes.

Voici le code que j'ai:

date_default_timezone_set("America/New_York"); 
require_once (dirname(__FILE__) . '/lib/log4php/Logger.php'); 
Logger::configure(
    array(
     'appenders' => array(
      'default' => array(
       'class' => 'LoggerAppenderRollingFile', 
       'layout' => array(
        'class' => 'LoggerLayoutPattern', 
        'params' => array(
         'conversionPattern' => '%d{Y-m-d H:i:s.u} [%t] %-5p - %m%n' 
        )  
       ), 
       'params' => array(
        'file' => '/var/log/myapp/myapp.' . date('Y-m-d') . '.log', 
        'maxFileSize' => '1MB', 
        'maxBackupIndex' => 10, 
       ), 
      ), 
     ), 
     'rootLogger' => array(
      'appenders' => array('default'), 
     ), 
    ) 
); 

$logger = Logger::getLogger('myapp'); 

for($i=0; $i<5000; $i++) { 
    $logger->info("This is a test [${i}]."); 
} 

Dans le cas où ce code sert quelqu'un d'autre question similaire.

Soyez sûr,

Répondre

0

Un fuseau horaire par défaut défini appartient à une application php travail entièrement. En dehors de cela, vous ne savez pas très bien ce que log4php attend de vous. Le projet a tout de la liste de diffusion à la question tracker - vous êtes invités à envoyer vos souhaits.

+0

Très simple ... vous avez un site Web disponible dans de nombreux fuseaux horaires, mais la journalisation va au serveur local. Utiliseriez-vous une valeur par défaut du serveur, et manipulez-vous manuellement tous les trucs de fuseau horaire manuellement partout ailleurs sur toutes les pages? –

+0

Probablement oui, réglage de fuseau horaire explicite partout où il s'agit de la sortie de l'utilisateur - il a probablement configuré lui-même le fuseau horaire. Fuseau horaire par défaut pour tout ce qui concerne le serveur. Je parie qu'une entreprise mondiale va se connecter au fuseau horaire UTC sur tous les serveurs. – Sven

0

J'ai eu un problème similaire. Vous pouvez enregistrer la date et l'heure pour UTC/GMT dans log4php en changeant une ligne de code dans le module.

Voici comment je l'ai fait. Allez dans le module et trouvez le fichier LoggerPatternConverterDate.php.

cd log4php/pattern/ 
vim LoggerPatternConverterDate.php 

Trouver la fonction privatedate($format, $utimestamp) (ligne 84 pour moi) et changer la ligne de code qui retourne.

Ce: return date(preg_replace('`(?<!\\\\)u`', $ms, $format), $timestamp);

Devient: return gmdate(preg_replace('`(?<!\\\\)u`', $ms, $format), $timestamp);

En outre, trouver le fichier: log4php/appenders/LoggerAppenderDailyFile.php et modifiez la ligne suivante:

Ce: return date($this->datePattern, $timestamp); Devient: return gmdate($this->datePattern, $timestamp);

REMARQUE: La seule chose qui a changé est la fonction utilisée pour formater la chaîne de date. date() dépend du fuseau horaire que vous avez défini en utilisant date_default_timezone_set tandis que gmdate() met en forme la date et l'heure en UTC/GMT indépendamment du fuseau horaire par défaut.