php利用单例模式实现日志处理类库_PHP
对于现在的应用程序来说,日志的重要性是不言而喻的。很难想象没有任何日志记录功能的应用程序运行在生产环境中。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题来源的重要依据。应用程序运行时的产生的各种信息,都应该通过日志类库来进行记录。
复制代码 代码如下:
/**
* 日志处理类
*
* @since alpha 0.0.1
* @date 2014.03.04
* @author genialx
*
*/
class Log{
//单例模式
private static $instance = NULL;
//文件句柄
private static $handle = NULL;
//日志开关
private $log_switch = NULL;
//日志相对目录
private $log_file_path = NULL;
//日志文件最大长度,超出长度重新建立文件
private $log_max_len = NULL;
//日志文件前缀,入 log_0
private $log_file_pre = 'log_';
/**
* 构造函数
*
* @since alpha 0.0.1
* @date 2014.02.04
* @author genialx
*/
protected function __construct(){//注意:以下是配置文件中的常量,请读者自行更改
$this->log_file_path = LOG_FILE_PATH;
$this->log_switch = LOG_SWITCH;
$this->log_max_len = LOG_MAX_LEN;
}
/**
* 单利模式
*
* @since alpha 0.0.1
* @date 2014.02.04
* @author genialx
*/
public static function get_instance(){
if(!self::$instance instanceof self){
self::$instance = new self;
}
return self::$instance;
}
/**
*
* 日志记录
*
* @param int $type 0 -> 记录(THING LOG) / 1 -> 错误(ERROR LOG)
* @param string $desc
* @param string $time
*
* @since alpha 0.0.1
* @date 2014.02.04
* @author genialx
*
*/
public function log($type,$desc,$time){
if($this->log_switch){
if(self::$handle == NULL){
$filename = $this->log_file_pre . $this->get_max_log_file_suf();
self::$handle = fopen($this->log_file_path . $filename, 'a');
}
switch($type){
case 0:
fwrite(self::$handle, 'THING LOG:' . ' ' . $desc . ' ' . $time . chr(13));
break;
case 1:
fwrite(self::$handle, 'ERROR LOG:' . ' ' . $desc . ' ' . $time . chr(13));
break;
default:
fwrite(self::$handle, 'THING LOG:' . ' ' . $desc . ' ' . $time . chr(13));
break;
}
}
}
/**
* 获取当前日志的最新文档的后缀
*
* @since alpha 0.0.1
* @date 2014.02.04
* @author genialx
*/
private function get_max_log_file_suf(){
$log_file_suf = null;
if(is_dir($this->log_file_path)){
if($dh = opendir($this->log_file_path)){
while(($file = readdir($dh)) != FALSE){
if($file != '.' && $file != '..'){
if(filetype( $this->log_file_path . $file) == 'file'){
$rs = split('_', $file);
if($log_file_suf $log_file_suf = $rs[1];
}
}
}
}
if($log_file_suf == NULL){
$log_file_suf = 0;
}
//截断文件
if( file_exists($this->log_file_path . $this->log_file_pre . $log_file_suf) && filesize($this->log_file_path . $this->log_file_pre . $log_file_suf) >= $this->log_max_len){
$log_file_suf = intval($log_file_suf) + 1;
}
return $log_file_suf;
}
}
return 0;
}
/**
* 关闭文件句柄
*
* @since alpha 0.0.1
* @date 2014.02.04
* @author genialx
*/
public function close(){
fclose(self::$handle);
}
}
功能说明:
该日志类利用单例模式,节省资源。自行判断文件大小,超出指定大小则按序自行创建文件。如:文件log_0大于指定大小,则重新创建log_1文件(注意:创建文件是安装文件名后缀的数字的,请勿随意更改日志文件名)。
有待优化:没有指定文件的最大个数,所以定期要手动删除过多的日志文件。
调用示例:
复制代码 代码如下:
//LOG
$L = Log::get_instance();
//第一个参数 int 0代表事件记录(THING LOG:),1代表错误记录(ERROR LOG:)
//第二个参数 string 描述文字
//第三个参数 string 时间
$L->log(1,'日志描述', date('Y-n-j H:m:s'));
$L->close();

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les journaux de Win10 peuvent aider les utilisateurs à comprendre l'utilisation du système en détail. De nombreux utilisateurs doivent avoir rencontré le journal 6013 lorsqu'ils recherchent leurs propres journaux de gestion. Alors, que signifie ce code ? Qu'est-ce que le journal Win10 6013 : 1. Il s'agit d'un journal normal. Les informations contenues dans ce journal ne signifient pas que votre ordinateur a été redémarré, mais elles indiquent combien de temps le système a fonctionné depuis son dernier démarrage. Ce journal apparaîtra une fois par jour à 12 heures précises. Comment vérifier depuis combien de temps le système fonctionne ? Vous pouvez saisir les informations système dans cmd. Il y a une ligne dedans.

Les journaux de Win10 peuvent aider les utilisateurs à comprendre l'utilisation du système en détail. De nombreux utilisateurs doivent avoir vu de nombreux journaux d'erreurs lorsqu'ils recherchent leurs propres journaux de gestion. Alors, comment les résoudre ? Comment résoudre l'événement 7034 du journal Win10 : 1. Cliquez sur "Démarrer" pour ouvrir le "Panneau de configuration" 2. Recherchez "Outils d'administration" 3. Cliquez sur "Services" 4. Recherchez HDZBCommServiceForV2.0, cliquez avec le bouton droit sur "Arrêter le service" et modifiez-le. vers "Démarrage manuel "

Sur les systèmes Linux, vous pouvez utiliser la commande suivante pour afficher le contenu du fichier journal : Commande tail : La commande tail est utilisée pour afficher le contenu à la fin du fichier journal. Il s'agit d'une commande courante pour afficher les dernières informations du journal. tail [option] [nom du fichier] Les options couramment utilisées incluent : -n : Spécifiez le nombre de lignes à afficher, la valeur par défaut est de 10 lignes. -f : Surveillez le contenu du fichier en temps réel et affichez automatiquement le nouveau contenu lorsque le fichier est mis à jour. Exemple : tail-n20logfile.txt#Afficher les 20 dernières lignes du fichier logfile.txt tail-flogfile.txt#Surveiller le contenu mis à jour du fichier logfile.txt en temps réel Commande head : La commande head permet d'afficher le début du fichier journal

iPhone vous permet d’ajouter des médicaments dans l’application Santé pour suivre et gérer les médicaments, vitamines et suppléments que vous prenez quotidiennement. Vous pouvez ensuite enregistrer les médicaments que vous avez pris ou ignorés lorsque vous recevez une notification sur votre appareil. Après avoir enregistré vos médicaments, vous pouvez voir à quelle fréquence vous les avez pris ou sautés pour vous aider à suivre votre état de santé. Dans cet article, nous vous guiderons pour afficher l'historique des journaux de médicaments sélectionnés dans l'application Santé sur iPhone. Un petit guide sur la façon d'afficher l'historique de votre journal de médicaments dans l'application Santé : Accédez à l'application Santé > Parcourir > Médicaments > Médicaments > Sélectionner un médicament > Options

Les journaux de Win10 ont un contenu très riche. De nombreux utilisateurs ont dû voir l'erreur d'affichage de l'événement ID455 lors de la recherche de leurs propres journaux de gestion. Alors, qu'est-ce que cela signifie ? Qu'est-ce que l'événement ID455 dans le journal Win10 : 1. ID455 est l'erreur <erreur> qui s'est produite dans <fichier> lorsque la banque d'informations a ouvert le fichier journal.

Types de fichiers journaux Linux et méthodes de configuration Dans les systèmes Linux, les fichiers journaux sont très importants. Ils enregistrent l'état de fonctionnement du système, les opérations de l'utilisateur et l'occurrence de divers événements. En vérifiant les fichiers journaux, les administrateurs système peuvent découvrir les problèmes à temps et les gérer en conséquence. Cet article présentera les types courants de fichiers journaux dans les systèmes Linux et comment configurer la journalisation. 1. Types de fichiers journaux Journal système : le journal système est un fichier journal qui enregistre l'état de fonctionnement du système, y compris le démarrage, l'arrêt du système, le démarrage et l'arrêt du service, etc.

Dans le développement d’applications Java, la surveillance du fonctionnement du système est très importante. En enregistrant les informations clés, les exceptions et les indicateurs de performance via la structure de journalisation, les problèmes peuvent être capturés en temps opportun, le dépannage peut être effectué et les performances du système peuvent être optimisées. Ce qui suit présente comment utiliser la structure de journalisation de Java pour surveiller le fonctionnement du système et fournit des compétences et une expérience pratiques. 1. Choisissez un framework de journalisation approprié 1. Frameworks de journalisation courants : Les frameworks de journalisation Java courants incluent Log4j, Logback et java.util.logging, etc. 2. Comparaison des fonctionnalités : différents cadres de journalisation ont des caractéristiques différentes. Par exemple, Log4j a une configuration flexible et des formats de sortie riches. Logback est le successeur de Log4j et adopte des formats plus avancés.

Conseil d'optimisation de la journalisation : désactivez la journalisation du débogage pour éliminer l'impact. Messages de journalisation par lots pour réduire les frais généraux. Utilisez la journalisation asynchrone pour décharger les opérations de journalisation. Limitez la taille du fichier journal pour améliorer les performances de démarrage et de traitement des applications.
