Monolog: Perpustakaan Log PHP yang kuat yang membantu anda meningkatkan kecekapan pembangunan aplikasi dan penyelenggaraan
Rakaman log adalah bahagian yang sangat diperlukan dari kitaran pembangunan dan penyelenggaraan aplikasi, dan ia tidak hanya bergantung pada data yang direkodkan, tetapi juga dalam cara ia direkodkan. Artikel ini akan menyelam ke dalam pakej monolog untuk menunjukkan bagaimana ia dapat membantu anda memanfaatkan sepenuhnya log anda.
Kelebihan teras:
- Diintegrasikan secara meluas:
Monolog adalah perpustakaan log popular yang mengintegrasikan dengan kebanyakan rangka kerja arus perdana untuk memudahkan pemaju untuk memanfaatkan keupayaan pembalakannya. Ia mengikuti standard PHP-FIG, menjadikannya mudah untuk beralih kepada pelaksanaan lain. Pemprosesan fleksibel: - Kaya yang berfungsi: Monolog menyediakan pelbagai preprocessors praktikal untuk mengandungi maklumat terperinci seperti puncak memori, ID pengguna, dan membolehkan format mesej log tersuai. Ini menjadikannya alat yang berkuasa untuk pembalakan dan debug semasa kitaran pembangunan/penyelenggaraan aplikasi.
- Pemasangan:
Monolog boleh didapati di Packagist dan boleh dipasang melalui Komposer:
Jika anda menggunakan rangka kerja, monolog biasanya menyediakan penyelesaian integrasi. Contoh berikut tidak menggunakan integrasi rangka kerja dan menunjukkan cara mengkonfigurasi monolog dalam sebarang permohonan.
composer require 'monolog/monolog:1.13.*'
logger login:
Apabila membuat logger, anda harus menentukan nama saluran untuk membezakan pembalak yang berbeza. Contoh berikut mengikat logger ke bekas aplikasi:
Monolog mengikuti standard PSR-3, menjadikannya mudah untuk beralih kepada pelaksanaan lain. Anda boleh menggunakan kaedah berikut untuk pembalakan (log, debug, maklumat, amaran, kesilapan, kritikal, amaran, kecemasan):
// app/bootstrap/container.php $logger = new \Monolog\Logger('general'); $app->container->logger = $logger;
pemproses:
$app->container->logger->info("一条INFO消息。");
Mesej log akan melalui senarai pemproses berdaftar. Pemproses perlu menentukan tahap log dan keadaan gelembung proses (sama ada mesej terus disebarkan). Secara lalai, Monolog menggunakan untuk log log ke output ralat standard. Pemproses yang ada disenaraikan dalam dokumentasi.
Contoh berikut menunjukkan cara menggunakan pelbagai pemproses dan mekanisme menggelegak: mesej maklumat log ke konsol penyemak imbas dan mesej ralat ke output terminal. MonologHandlerStreamHandler
// app/bootstrap/container.php $logger = new \Monolog\Logger('general'); $browserHanlder = new \Monolog\Handler\BrowserConsoleHandler(\Monolog\Logger::INFO); $streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR); $logger->pushHandler($browserHanlder); $logger->pushHandler($streamHandler); $app->container->logger = $logger;
// app/routes.php $app->get('/admin/users', function () use ($app) { $app->container->logger->info("另一条INFO消息"); $app->container->logger->error("另一条ERROR消息"); // ... });
Mesej ralat direkodkan ke terminal seperti yang diharapkan, tetapi mengapa mereka juga muncul dalam konsol penyemak imbas? Ini adalah mekanisme menggelegak monolog. Mesej ralat pertama kali dilog masuk ke terminal dan jika pilihan gelembung ditetapkan kepada benar, ia terus menyebarkan ke bahagian atas giliran pemproses. Tetapkan pilihan menggelegak
kepada palsu:
composer require 'monolog/monolog:1.13.*'
Log ralat kini tidak dipaparkan dalam konsol penyemak imbas, iaitu cara memisahkan tahap log.
pemproses slack:
Sebelum menggunakan pemproses Slack, anda perlu mendapatkan token untuk membenarkannya untuk menerbitkan ke saluran Slack.
// app/bootstrap/container.php $logger = new \Monolog\Logger('general'); $app->container->logger = $logger;
Anda hanya perlu menentukan nama token dan saluran Slack, parameter pilihan ketiga adalah nama robot. Tahap log Slack adalah kritikal, tetapi anda boleh mengubahnya menggunakan kaedah setLevel
.
$app->container->logger->info("一条INFO消息。");
Selepas menghantar mesej log, anda boleh mengakses saluran anda untuk melihat mesej ralat yang direkodkan.
// app/bootstrap/container.php $logger = new \Monolog\Logger('general'); $browserHanlder = new \Monolog\Handler\BrowserConsoleHandler(\Monolog\Logger::INFO); $streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR); $logger->pushHandler($browserHanlder); $logger->pushHandler($streamHandler); $app->container->logger = $logger;
formatizer:
Setiap pemproses mempunyai formatter lalai, jika tidak ditentukan, gunakan. Anda boleh beralih ke formatter lain seperti LineFormatter
. HtmlFormatter
// app/routes.php $app->get('/admin/users', function () use ($app) { $app->container->logger->info("另一条INFO消息"); $app->container->logger->error("另一条ERROR消息"); // ... });Mesej log kini akan dilog masuk ke konsol penyemak imbas dalam format HTML.
// app/bootstrap/container.php // ... $streamHandler = new \Monolog\Handler\StreamHandler('php://stderr', \Monolog\Logger::ERROR, false); // ...
Preprocessor digunakan untuk menambah lebih banyak butiran kepada log. Sebagai contoh,
tambahkan lebih banyak maklumat mengenai permintaan (URL, IP, dan lain -lain).
WebProcessor
// app/bootstrap/container.php // ... $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-5156076911-5156636951-6084570483-7b4fb8', '#general', 'ChhiwatBot'); $logger->pushHandler($slackHandler); // ...
$slackHandler->setLevel(\Monolog\Logger::ERROR);
Ringkasan:
Monolog adalah salah satu perpustakaan log yang sangat baik dan mengintegrasikan dengan kebanyakan kerangka arus perdana.
FAQ:
(bahagian FAQ ditinggalkan di sini kerana artikel itu terlalu panjang dan mempunyai pengulangan yang tinggi dari kandungan utama artikel. Jika perlu, anda boleh bertanya soalan Soalan Lazim secara berasingan dan saya akan menjawabnya satu persatu.)
Atas ialah kandungan terperinci Pembalakan dengan Monolog: Dari Devtools hingga Slack. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Thesecrettokeepingaphp-poweredwebsiterunningsmoothlyunderheavyloadinVolvesserVeSkeystrategies: 1) pelaksanaanPodeCachingWithopCachetoreduceScriptexecutionTime, 2) UsedataBasequerycachingWnithSoRessendataBaBAboad, 3)

Anda harus mengambil berat tentang kebergantungan (DI) kerana ia menjadikan kod anda lebih jelas dan lebih mudah untuk dikekalkan. 1) Di menjadikannya lebih modular dengan decoupling kelas, 2) meningkatkan kemudahan ujian dan fleksibiliti kod, 3) menggunakan bekas DI untuk menguruskan kebergantungan kompleks, tetapi memberi perhatian kepada kesan prestasi dan kebergantungan bulat, 4) Amalan terbaik adalah bergantung kepada antara muka abstrak untuk mencapai gandingan longgar.

Ya, OptimizingaphpapplicationIspossibleandessential.1) pelaksanaanCachingUsingAputeDeducedeDataBaseload.2) OptimisedataTabaseseseshithindexing, eficientqueries, danConnectionPooling.3) EnhancecodeWithBuilt-Infungsi, EveringGlobalVariables

ThekeystrategiestoSignificLantantlyboostphpapplicationperformanceare: 1) useopcodecachinglikLikeopcachetoreduceExecutionTime, 2) OptimizedataBaseInteractionsWithPreparedStatementsandProperindexing, 3) ConfigureWebserverserverLikenginxWithPmforbetterShipter.

AphpdependencyInjectionContainerisatoLthatMatagesClassDependencies, EnhancingCodeModularity, Testability, andMaintainability.itactsascentralHubforcreatingandinjectingdependencies, sheReducingTightCouplingandeaseaseaseSunittesting.

Pilih DependencyInjection (DI) Untuk aplikasi besar, servicelocator sesuai untuk projek kecil atau prototaip. 1) DI meningkatkan kesesuaian dan modulariti kod melalui suntikan pembina. 2) ServiceLocator memperoleh perkhidmatan melalui pendaftaran pusat, yang mudah tetapi boleh menyebabkan peningkatan gandingan kod.

Phpapplicationscanbeoptimizedforspeedandeficiencyby: 1) enablingopcacheinphp.ini, 2) menggunakan preparedSwithpdofordatabasequeries, 3) menggantikanloopswitharray_filterandarray_mapfordataprocessing, 4) configuringnginywinginywinyvinyvinginy

PhpeMailvalidationInvolvestHreesteps: 1) formatValidationingRegularExpressionStocheckTheemailFormat; 2) dnsvalidationtoensurethedomainhasavalidmxrecord;


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
