国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end tutoriel php PHP框架中的日志系統(tǒng)

PHP框架中的日志系統(tǒng)

Aug 08, 2016 am 09:32 AM
error exception kohana nbsp shutdown

 

 現(xiàn)在在一家公司做PHP后臺(tái)開(kāi)發(fā)程序猿(我們組沒(méi)有前端,做活動(dòng)時(shí)會(huì)做前端的東西),剛開(kāi)始到公司的時(shí)候花2個(gè)周趕出了一個(gè)前端加后臺(tái)的活動(dòng)(記得當(dāng)時(shí)做不出來(lái)周末加了兩天班、、、),到現(xiàn)在過(guò)去4個(gè)多月了,可以用一下午秒掉一個(gè)不是很復(fù)雜的活動(dòng),當(dāng)然了現(xiàn)在做的時(shí)候會(huì)考慮很多東西,比如說(shuō)擴(kuò)展性、可重用性,因?yàn)樽龅亩嗔?,?huì)積累很多類似小插件的東西,所以會(huì)很快。。。。。。但是我發(fā)現(xiàn)整天“站在需求里面做需求”很差勁,這樣不會(huì)學(xué)到系統(tǒng)的、框架類的東西,因?yàn)槎急滑嵥榈男枨蠼o困住了,沒(méi)有時(shí)間去做一些框架重要部分的東西,而且當(dāng)你的同事、上司習(xí)慣了你去做那些事的時(shí)候,每次遇到那些沒(méi)技術(shù)含量的但又不得不做的東西都會(huì)毫不猶豫的推給你(自私點(diǎn)的說(shuō),每個(gè)程序猿都像我一樣吧,都想掌握一塊有技術(shù)含量的東西,這樣才有程序猿的自豪感),久而久之你就會(huì)習(xí)慣、、、、、、這樣真的很慘,所以,我會(huì)抽出點(diǎn)時(shí)間來(lái)學(xué)習(xí)下框架中的東西,爭(zhēng)取不做一個(gè)簡(jiǎn)單的碼農(nóng)。

引言

??? 接觸過(guò)php框架的朋友們可能都知道,日志在項(xiàng)目中的重要作用了,他可以幫助我們定位錯(cuò)誤的位置,讓程序更友好(處理得當(dāng)?shù)脑挷粫?huì)直接拋出一大堆只有程序猿才真正動(dòng)的英文),調(diào)試的時(shí)候也會(huì)很方便,還可以記錄一些重要的操作等等,總之一個(gè)完整的項(xiàng)目要是沒(méi)了日志系統(tǒng),就已經(jīng)開(kāi)發(fā)的路上布滿了荊棘、坑洼,肯定會(huì)磕磕絆絆的。

?

簡(jiǎn)介

??? 要掌握PHP日志系統(tǒng),必須先對(duì)這幾點(diǎn)東西了解透徹。

一、php的幾個(gè)函數(shù)

?1 set_exception_handler(callback $exception_handler); //異常捕獲自定義處理函數(shù)注冊(cè)?

?1 set_error_handler(callback $error_handler); //錯(cuò)誤捕獲自定義處理函數(shù)注冊(cè)?

?1 register_shutdown_function(callback $callback); //程序執(zhí)行時(shí)異常終止錯(cuò)誤捕獲處理函數(shù)注冊(cè)?

??? 這三個(gè)函數(shù)在錯(cuò)誤處理控制中給開(kāi)發(fā)者提供了很大的自主空間,在日志系統(tǒng)中記錄日志信息有他們的功勞。

??? 在程序中出現(xiàn)異常(exception)問(wèn)題時(shí),php內(nèi)核會(huì)拋出異常錯(cuò)誤,然后將錯(cuò)誤信息打印給使用者,如果注冊(cè)了exception處理函數(shù),php拋出的異常會(huì)轉(zhuǎn)給自定義的注冊(cè)的異常捕獲函數(shù),這個(gè)函數(shù)里面包含了我們要做的處理,記錄錯(cuò)誤信息(包括錯(cuò)誤詳細(xì)內(nèi)容、錯(cuò)誤位置),該函數(shù)處理完異常后,異常就會(huì)終止。

??? 當(dāng)程序中出現(xiàn)error時(shí),我們注冊(cè)的error處理函數(shù)會(huì)在函數(shù)中將錯(cuò)誤信息轉(zhuǎn)化為一個(gè)錯(cuò)誤異常對(duì)象傳遞給異常處理函數(shù),也就是第一步的$exception_handler函數(shù)。

??? 當(dāng)成續(xù)重出現(xiàn)shutdown錯(cuò)誤時(shí),會(huì)執(zhí)行我們注冊(cè)的異常終止處理函數(shù),該函數(shù)通過(guò)error_get_last()獲取到最后的shutdown時(shí)的錯(cuò)誤對(duì)象,接著和上一部一樣,生成一個(gè)error exception對(duì)象,將該對(duì)象傳遞給我們注冊(cè)的異常處理函數(shù)。

??? 可以看到,其實(shí)不管是異常還是錯(cuò)誤,都是將自己的信息轉(zhuǎn)化為異常處理函數(shù)認(rèn)識(shí)的異常信息,然后交給異常處理函數(shù)處理,非異常信息就像化了妝的女人一樣,異常處理程序不認(rèn)識(shí)這些非異常信息,只有將裝卸掉(非異常信息自己轉(zhuǎn)化為異常信息,準(zhǔn)確的說(shuō)應(yīng)該是拋出),異常處理才認(rèn)識(shí)。

php日志系統(tǒng)中的錯(cuò)誤處理流程

??? 那么現(xiàn)在問(wèn)題來(lái)了,這幾個(gè)函數(shù)一般會(huì)配合一個(gè)異常處理類庫(kù),加上一個(gè)錯(cuò)誤日志記錄類庫(kù)來(lái)進(jìn)行工作,異常處理類庫(kù)中包含要注冊(cè)的3個(gè)函數(shù),日志記錄類庫(kù)在$exception_handler中調(diào)用,用來(lái)合理的記錄和放置日志文件的位置,上面說(shuō)到的幾個(gè)函數(shù)一般是在程序框架入口處進(jìn)行加載注冊(cè)的,就像下面這樣:

這里面用的是array(class,function)這種方式。

<span>1</span> <span>set_exception_handler</span>(<span>array</span>("Myexception","exceptionHandler"<span>));
</span><span>2</span> <span>set_error_handler</span>(<span>array</span>("Myexception","errorHandler"<span>));
</span><span>3</span> <span>register_shutdown_function</span>(<span>array</span>("Myexception","shutdownHandler"));

二、日志記錄相關(guān)類庫(kù)

??? 第一部分介紹到的東西只是對(duì)異常、錯(cuò)誤、shutdown進(jìn)行了捕獲,這只是第一步,接下來(lái)還要對(duì)捕獲到的信息進(jìn)行合理的處理,比如說(shuō)記錄這些日志信息到本地文件系統(tǒng)中(這個(gè)操作是在array("Myexception","exceptionHandler")),這個(gè)地方就用到了日志記錄類庫(kù)。(下面要說(shuō)的類庫(kù)是借鑒了kohana日志系統(tǒng)的設(shè)計(jì))。

??? 日式日志記錄也很簡(jiǎn)單只要做的將信息添加到文件末尾就行,這個(gè)很容易實(shí)現(xiàn),相信大家都可以自己實(shí)現(xiàn),但是要設(shè)計(jì)出一個(gè)便捷的、高效的、擴(kuò)展的日志記錄類庫(kù)就不那么簡(jiǎn)單了,要經(jīng)過(guò)長(zhǎng)時(shí)間的實(shí)踐總結(jié)優(yōu)化才可以,kohana框架中的日志記錄類庫(kù)已經(jīng)比較成熟了,因此這里拿來(lái)借鑒。

??? 相信使用過(guò)kohana的用戶一定對(duì)kohana框架中的日志記錄比較熟悉,不熟悉也沒(méi)關(guān)系,我下面會(huì)大概的說(shuō)說(shuō),在kohana源碼中的application/bootstrap.php文件中的第109——112行可以看到下面的代碼:

<span>109</span> <span>/*</span><span>*
</span><span>110</span> <span> * Attach the file write to logging. Multiple writers are supported.
</span><span>111</span>  <span>*/</span>
<span>112</span> Kohana::<span>$log</span>->attach(<span>new</span> Log_File(APPPATH.'logs'));

??? 這個(gè)就是添加一個(gè)日志記錄對(duì)象日志對(duì)象中,注意橄欖色打底的倆個(gè),他們是不同的類庫(kù)實(shí)例,在kohana中,日志記錄對(duì)象分為兩部分,第一部分就是日志對(duì)象,用來(lái)維護(hù)一個(gè)日志記錄對(duì)象的列表,這個(gè)要怎么理解呢,其實(shí)就像一個(gè)容器,里面包含了一個(gè)或多個(gè)日志記錄對(duì)象(這個(gè)就是第二部分,這些日志記錄對(duì)象才是真正來(lái)記錄日志的),還有每個(gè)對(duì)象要記錄的錯(cuò)誤等級(jí)的數(shù)組,當(dāng)滿足錯(cuò)誤等級(jí)的時(shí)候才會(huì)去記錄,不滿足就會(huì)略掉。下面是我自己簡(jiǎn)化重命名后的日志記錄方式:

<span>1</span> self::<span>$log</span> = <span>Log</span>::<span>instance();
</span><span>2</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/debug"),<span>Log</span>::<span>DEBUG);
</span><span>3</span> self::<span>$log</span>->attach(<span>new</span> Logwriter("./data/notice"),<span>Log</span>::NOTICE);

??? 我這里面為了更好地理解,將“容器”命名為L(zhǎng)og,記錄的實(shí)例命名為L(zhǎng)ogwriter,可以看到我在程序入口處很容易的添加了兩不同的日志種類,第一個(gè)是記錄所有錯(cuò)誤號(hào)比Log::DEBUG小的錯(cuò)誤(錯(cuò)誤級(jí)別比他高),并按規(guī)則記錄在文件夾./data/debug下面,第二個(gè)是記錄級(jí)別等于或高于Log::NOTICE的錯(cuò)誤,當(dāng)然了你還可以更詳細(xì)制定具體哪些錯(cuò)誤好,傳遞數(shù)組就行了,這個(gè)就是我感覺(jué)方便、快捷的地方,我們可以根據(jù)需求來(lái)添加錯(cuò)誤日志、分不同的日志目錄,下面看一幅圖也許會(huì)有助于理解:

????????????????????????????????????????????????????????????????????????????????????????????????????? log與logwriter的關(guān)系

??? 通過(guò)上面的圖你就會(huì)看到Log是一個(gè)容器,包含了具體的不同的logwriter對(duì)象,每個(gè)對(duì)象可能要記錄不同的信息,當(dāng)錯(cuò)誤信息要刷到文件中的時(shí)候,會(huì)運(yùn)行每一個(gè)Logwriter實(shí)例,看看自己是否要記錄errormessage中的錯(cuò)誤,errormessage中的level不包含在Logwriter內(nèi)時(shí)忽略。

??? 這本分和第一部分怎么合作的呢?其實(shí)很簡(jiǎn)單,當(dāng)exception捕獲的異常時(shí)會(huì)調(diào)用添加一條錯(cuò)誤信息(包括錯(cuò)誤位置、錯(cuò)誤代號(hào)、錯(cuò)誤信息等信息)到Log容器中的errormessage數(shù)組中,然后當(dāng)程序結(jié)束之后在將這些信息寫入文件,這里還要注意下,也許你在閱讀kohana代碼是發(fā)現(xiàn)沒(méi)有明顯的直接寫入到日志中去,這里面kohana優(yōu)化的比較好,因?yàn)閜hp的一次執(zhí)行可能出現(xiàn)多個(gè)錯(cuò)誤,如果來(lái)一個(gè)錯(cuò)誤你就去記錄一次這樣會(huì)在程序返回之前占用多余的io和時(shí)間,所以kohana的做法是默認(rèn)將所有的錯(cuò)誤、異常、日志存放在Log::$errormessage中,并在實(shí)例化的時(shí)候講Log中的writer操作注冊(cè)register_shutdown_function,這個(gè)函數(shù)的作用是在程序異常終止或者執(zhí)行完成之后執(zhí)行,前面第一部分也有使用到,這樣日志記錄就不會(huì)對(duì)本次php的執(zhí)行產(chǎn)生帶大的影響。

三、實(shí)例總結(jié)

??? 到這里你應(yīng)該已經(jīng)了解了日志系統(tǒng)的大概了,已經(jīng)可以自己編寫一個(gè)”日志系統(tǒng)”來(lái)使用了,下面看看我的”日志系統(tǒng)“的例子,這是github地址,里面有代碼和例子,需要的話可以看看。

https://github.com/AizuYan/phplog.git

本文版權(quán)歸作者(luluyrt@163.com)和博客園共有,未經(jīng)作者本人同意禁止任何形式的轉(zhuǎn)載,轉(zhuǎn)載文章之后必須在文章頁(yè)面明顯位置給出作者和原文連接,否則保留追究法律責(zé)任的權(quán)利。

以上就介紹了PHP框架中的日志系統(tǒng),包括了方面的內(nèi)容,希望對(duì)PHP教程有興趣的朋友有所幫助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Sujets chauds

Tutoriel PHP
1502
276
Comment ajuster les paramètres de bordure de fenêtre sous Windows 11?: modifier la couleur et la taille Comment ajuster les paramètres de bordure de fenêtre sous Windows 11?: modifier la couleur et la taille Sep 22, 2023 am 11:37 AM

Windows 11 met au premier plan un design frais et élégant ; l'interface moderne vous permet de personnaliser et de modifier les moindres détails, tels que les bordures des fenêtres. Dans ce guide, nous discuterons des instructions étape par étape pour vous aider à créer un environnement qui reflète votre style dans le système d'exploitation Windows. Comment modifier les paramètres de bordure de fenêtre ? Appuyez sur + pour ouvrir l'application Paramètres. WindowsJe vais dans Personnalisation et clique sur Paramètres de couleur. Changement de couleur Paramètres des bordures de fenêtre Fenêtre 11" Largeur = "643" Hauteur = "500" > Recherchez l'option Afficher la couleur d'accent sur la barre de titre et les bordures de fenêtre et activez le commutateur à c?té. Pour afficher les couleurs d'accent dans le menu Démarrer et la barre des taches Pour afficher la couleur du thème dans le menu Démarrer et la barre des taches, activez Afficher le thème dans le menu Démarrer et la barre des taches.

Solution?: Votre organisation vous demande de modifier votre code PIN Solution?: Votre organisation vous demande de modifier votre code PIN Oct 04, 2023 pm 05:45 PM

Le message ? Votre organisation vous a demandé de modifier votre code PIN ? appara?tra sur l'écran de connexion. Cela se produit lorsque la limite d'expiration du code PIN est atteinte sur un ordinateur utilisant les paramètres de compte basés sur l'organisation, sur lesquels ils contr?lent les appareils personnels. Cependant, si vous configurez Windows à l'aide d'un compte personnel, le message d'erreur ne devrait idéalement pas appara?tre. Même si ce n'est pas toujours le cas. La plupart des utilisateurs qui rencontrent des erreurs déclarent utiliser leur compte personnel. Pourquoi mon organisation me demande-t-elle de modifier mon code PIN sous Windows 11 ? Il est possible que votre compte soit associé à une organisation et votre approche principale devrait être de le vérifier. Contacter votre administrateur de domaine peut vous aider?! De plus, des paramètres de stratégie locale mal configurés ou des clés de registre incorrectes peuvent provoquer des erreurs. Tout de suite

Comment changer la couleur de la barre de titre sous Windows 11 ? Comment changer la couleur de la barre de titre sous Windows 11 ? Sep 14, 2023 pm 03:33 PM

Par défaut, la couleur de la barre de titre sous Windows 11 dépend du thème sombre/clair que vous choisissez. Cependant, vous pouvez le changer pour la couleur de votre choix. Dans ce guide, nous discuterons des instructions étape par étape sur trois fa?ons de le modifier et de personnaliser votre expérience de bureau pour la rendre visuellement attrayante. Est-il possible de changer la couleur de la barre de titre des fenêtres actives et inactives ? Oui, vous pouvez modifier la couleur de la barre de titre des fenêtres actives à l'aide de l'application Paramètres, ou vous pouvez modifier la couleur de la barre de titre des fenêtres inactives à l'aide de l'éditeur du Registre. Pour conna?tre ces étapes, passez à la section suivante. Comment changer la couleur de la barre de titre sous Windows 11 ? 1. Appuyez sur + pour ouvrir la fenêtre des paramètres à l'aide de l'application Paramètres. WindowsJe vais dans "Personnalisation" puis

Comment activer ou désactiver les aper?us miniatures de la barre des taches sur Windows 11 Comment activer ou désactiver les aper?us miniatures de la barre des taches sur Windows 11 Sep 15, 2023 pm 03:57 PM

Les miniatures de la barre des taches peuvent être amusantes, mais elles peuvent aussi être distrayantes ou ennuyeuses. Compte tenu de la fréquence à laquelle vous survolez cette zone, vous avez peut-être fermé plusieurs fois des fenêtres importantes par inadvertance. Un autre inconvénient est qu'il utilise plus de ressources système, donc si vous cherchez un moyen d'être plus efficace en termes de ressources, nous allons vous montrer comment le désactiver. Cependant, si vos spécifications matérielles peuvent le gérer et que vous aimez l'aper?u, vous pouvez l'activer. Comment activer l’aper?u miniature de la barre des taches dans Windows 11 ? 1. Utilisez l'application Paramètres pour appuyer sur la touche et cliquez sur Paramètres. Windows, cliquez sur Système et sélectionnez à propos. Cliquez sur Paramètres système avancés. Accédez à l'onglet Avancé et sélectionnez Paramètres sous Performances. Sélectionnez "Effets visuels"

Problèmes d'erreur OOBELANGUAGE dans la réparation de Windows 11/10 Problèmes d'erreur OOBELANGUAGE dans la réparation de Windows 11/10 Jul 16, 2023 pm 03:29 PM

Voyez-vous ? Un problème est survenu ? avec l'instruction ? OOBELANGUAGE ? sur la page Windows Installer ? L'installation de Windows s'arrête parfois à cause de telles erreurs. OOBE signifie expérience hors des sentiers battus. Comme l'indique le message d'erreur, il s'agit d'un problème lié à la sélection de la langue OOBE. Il n'y a rien à craindre, vous pouvez résoudre ce problème avec une astucieuse modification du registre à partir de l'écran OOBE lui-même. Solution rapide – 1. Cliquez sur le bouton ? Réessayer ? en bas de l'application OOBE. Cela permettra de poursuivre le processus sans autre problème. 2. Utilisez le bouton d'alimentation pour forcer l'arrêt du système. Après le redémarrage du système, OOBE devrait continuer. 3. Déconnectez le système d'Internet. Terminez tous les aspects d'OOBE en mode hors ligne

10 fa?ons de régler la luminosité sous Windows 11 10 fa?ons de régler la luminosité sous Windows 11 Dec 18, 2023 pm 02:21 PM

La luminosité de l’écran fait partie intégrante de l’utilisation des appareils informatiques modernes, en particulier lorsque vous regardez l’écran pendant de longues périodes. Il vous aide à réduire la fatigue oculaire, à améliorer la lisibilité et à visualiser le contenu facilement et efficacement. Cependant, en fonction de vos paramètres, il peut parfois être difficile de gérer la luminosité, notamment sous Windows 11 avec les nouvelles modifications de l'interface utilisateur. Si vous rencontrez des difficultés pour régler la luminosité, voici toutes les manières de gérer la luminosité sous Windows 11. Comment modifier la luminosité sous Windows 11 [10 méthodes expliquées] Les utilisateurs d'un seul moniteur peuvent utiliser les méthodes suivantes pour régler la luminosité sous Windows 11. Cela inclut les systèmes de bureau utilisant un seul moniteur ainsi que les ordinateurs portables. Commen?ons. Méthode 1?: Utiliser le Centre d'action Le Centre d'action est accessible

Afficher le guide de mise à l'échelle sur Windows 11 Afficher le guide de mise à l'échelle sur Windows 11 Sep 19, 2023 pm 06:45 PM

Nous avons tous des préférences différentes en matière de mise à l'échelle de l'affichage sur Windows 11. Certaines personnes aiment les grandes ic?nes, d’autres les petites. Cependant, nous sommes tous d’accord sur le fait qu’il est important d’avoir la bonne échelle. Une mauvaise mise à l'échelle des polices ou une mise à l'échelle excessive des images peuvent nuire à la productivité lorsque vous travaillez. Vous devez donc savoir comment la personnaliser pour tirer le meilleur parti des capacités de votre système. Avantages du zoom personnalisé : Il s'agit d'une fonctionnalité utile pour les personnes qui ont des difficultés à lire du texte à l'écran. Cela vous aide à voir plus sur l’écran à la fois. Vous pouvez créer des profils d'extension personnalisés qui s'appliquent uniquement à certains moniteurs et applications. Peut aider à améliorer les performances du matériel bas de gamme. Cela vous donne plus de contr?le sur ce qui est sur votre écran. Comment utiliser Windows 11

Comment réparer le code d'erreur d'activation 0xc004f069 dans Windows Server Comment réparer le code d'erreur d'activation 0xc004f069 dans Windows Server Jul 22, 2023 am 09:49 AM

Le processus d'activation sous Windows prend parfois une tournure soudaine pour afficher un message d'erreur contenant ce code d'erreur 0xc004f069. Bien que le processus d'activation soit en ligne, certains anciens systèmes exécutant Windows Server peuvent rencontrer ce problème. Effectuez ces vérifications initiales et si elles ne vous aident pas à activer votre système, passez à la solution principale pour résoudre le problème. Solution de contournement?: fermez le message d'erreur et la fenêtre d'activation. Ensuite, redémarrez votre ordinateur. Réessayez le processus d'activation de Windows à partir de zéro. Correctif 1 – Activer depuis le terminal Activez le système Windows Server Edition à partir du terminal cmd. étape – 1 Vérifiez la version de Windows Server Vous devez vérifier quel type de W vous utilisez

See all articles