Ang pag-log ay isang mahalagang tampok na kailangang isaalang-alang ng mga developer upang masubaybayan pabalik ang mga error. , na isa sa pinakatanyag na mga wika sa pagprograma, ay mayroong isang napapasadyang diskarte sa pag-log sa pamamagitan ng pagbibigay ng pangunahing API ng pag-log. Kaya, sa artikulong ito sa Logger sa Java, tatalakayin ko kung paano maaaring magamit ang tampok na ito upang paganahin ang extensible logging sa Java.
Ang mga sumusunod na paksa ay saklaw sa artikulong ito:
Bago, lumalim kami sa pag-log in sa java, ipaalam sa amin na maunawaan ang pangangailangan para sa pag-log.
Kailangan para sa pag-log
Habang nagtatayo ng mga application, madalas kaming nahaharap sa mga error na kailangang mai-debug. Kaya, sa tulong ng mga troso, madali kaming makakakuha ng impormasyon tungkol sa kung ano ang nangyayari sa application na may tala ng mga error at hindi pangkaraniwang mga pangyayari. Ngayon, maaari mong isipin na, bakit hindi gamitin ang System.out.print () na pahayag sa . Kaya, ang problema sa mga pahayag na ito ay ang mga log message ay mai-print lamang sa console. Kaya, sa sandaling isara mo ang console, awtomatiko, mawawala ang lahat ng mga tala. Samakatuwid, ang mga log ay hindi maiimbak ng permanenteng, at ipapakita nang isa-isa, dahil ito ay isang solong-sinulid na kapaligiran.
Upang maiwasan ang mga naturang isyu, ang pag-log in sa Java ay pinasimple sa tulong ngAng API na ibinigay sa pamamagitan ngjava.util.logging
pakete, at angorg.apache.log4j. *
pakete
Mga Bahagi ng Pag-log
Ang mga bahagi ng pag-log ng Java ay tumutulong sa developer upang lumikha ng mga tala, ipasa ang mga tala sa kani-kanilang patutunguhan at mapanatili ang isang tamang format. Ang mga sumusunod ay ang tatlong mga bahagi:
- Mga Tagalabas - Responsable para sa pagkuha ng mga tala ng log at ipasa ang mga ito sa kaukulang Appender.
- Mga Appender o Handler - Sila ang responsable para sa pagtatala ng mga kaganapan sa pag-log sa isang patutunguhan. Nag-format ng mga kaganapan sa appenders sa tulong ng Mga Layout, bago magpadala ng mga output.
- Mga Layout o Formatter - Responsable upang matukoy kung paano ang hitsura ng data kapag lumitaw ito sa log entry.
Maaari kang mag-refer sa larawan sa ibaba para sa pagtatrabaho ng lahat ng tatlong mga bahagi:
Kapag ang isang application ay tumawag sa isang pag-log, itatala ng bahagi ng Logger ang kaganapan sa isang LogRecord at ipasa ito sa naaangkop na Appender. Pagkatapos ay binuo nito ang talaan gamit ang Layout ayon sa kinakailangang format. Maliban dito, maaari mo ring gamitin ang higit sa isang Mga Filter upang tukuyin kung aling Mga Appender ang dapat gamitin para sa mga kaganapan.
Ngayon, ipaalam sa amin na maunawaan kung ano ang isang logger sa Java nang malalim.
Ano ang Logger sa Java?
Ang mga logger sa Java ay mga bagay na nagpapalitaw ng mga kaganapan sa pag-log, Nilikha ang mga ito at tinawag sa code ng application, kung saan bumubuo sila ng Mga Kaganapan sa Log bago ipasa ang mga ito sa susunod na bahagi na isang Appender. Maaari kang gumamit ng maraming mga logger sa isang solong klase upang tumugon sa iba't ibang mga kaganapan o gumamit ng mga Logger sa isang hierarchy. Karaniwan silang pinangalanan gamit ang hierarchical dot-pinaghiwalay na namespace. Gayundin, ang lahat ng mga pangalan ng Logger ay dapat batay sa klase o sa pangalan ng package ng naka-log na bahagi.
Bukod dito, sinusubaybayan ng bawat Logger ang pinakamalapit na umiiral na ninuno sa Mga troso namespace at mayroon ding isang 'Antas' na nauugnay dito. Sa gayon, tatalakayin ko ang mga Logger sa huling bahagi ng artikulong ito, ngunit bago iyon, hayaan mo akong ipakita sa iyo kung paano lumikha ng isang Logger sa Java.
Lumikha ng bagong Logger
Ang proseso ng paglikha ng isang bagong Logger sa Java ay medyo simple. Kailangan mong gamitinLogger.getLogger ()
paraan AnggetLogger ()
kinikilala ang pangalan ng Logger at kumukuha ng string bilang isang parameter. Kaya, kung ang isang Logger ay mayroon nang dati, ang Logger na iyon ay ibinalik, kung hindi man nilikha ang isang bagong Logger.
Syntax:
static Logger logger = Logger.getLogger (SampleClass.class.getName ())
Dito, ang SampleClass ay ang pangalan ng klase kung saan kinukuha namin ang Logger object.
Halimbawa:
pampublikong klase ng Customer {pribadong static final Logger LOGGER = Logger.getLogger (Customer.class) pampublikong void getCustomerDetails () {}}
Ngayon na sinabi ko sa iyo kung paano lumikha ng isang Logger sa Java, ipaalam sa amin na makita ang iba't ibang mga antas na magagamit sa pag-log.
Mga Antas ng Pag-log
Ginagamit ang Mga Antas ng Pag-log upang maikategorya ang mga log ayon sa kanilang kalubhaan o ang epekto sa katatagan ng application. Angorg.apache.log4j. *
pakete at angjava.util.logging
parehong nagbibigay ng iba't ibang mga antas ng pag-log. Tingnan natin isa-isa ang bawat isa sa kanila.
org.apache.log4j. *
Ang pakete ay nagbibigay ng mga sumusunod na antas sa pababang pagkakasunud-sunod:
- FATAL
- ERROR
- BALAAN
- INFO
- DEBUG
java.util.logging
Ang pakete ay nagbibigay ng mga sumusunod na antas sa pababang pagkakasunud-sunod:
- SEVERE (PINAKA-TAAS NA ANTAS)
- BABALA
- INFO
- CONFIG
- Pino
- FINER
- FINEST (PINAKA LOWEST LEVEL)
Bukod dito, nagbibigay din ang package sa itaas ng dalawang karagdagang mga antasLAHAT
atPATAY
ginamit para sa pag-log ng lahat ng mga mensahe at hindi pagpapagana ng pag-log ayon sa pagkakabanggit.
Halimbawa ng Pag-log in Java gamit angorg.apache.log4j. *
package:
import org.apache.log4j.Logger pampublikong klase ng Customer {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Final Output')}}
Kaya kung ang iyong output ayroot logger bilang WARN-level sa aming log4j.mga pag-aari file, pagkatapos lahat ng mga mensahe ng error na may mas mataas na priyoridad kaysa sa WARN ay mai-print tulad ng sa ibaba:
kung paano gumawa ng dobleng isang int sa java
Maaari mo ring itakda ang antas sa pamamagitan ng paggamit ng setLevel () na pamamaraan mula sajava.util.logging
package tulad ng sa ibaba:
logger.setLevel (Antas. BABALA)
Halimbawa ng Pag-log in Java gamit angjava.util.logging
package:
package edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {private final static Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, 'Maligayang Pagdating sa Edureka!')}} pampublikong klase ng Customer {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level. WARNING, 'Kumusta! Maligayang Pagdating mula sa Edureka')}}
Upang paganahin ang pag-log in sa iyong application gamit angorg.apache.log4j. *
pakete o angjava.util.logging
package, kailangan mong i-configure ang mga file ng mga katangian. Susunod sa artikulong ito sa Logger sa Java, talakayin natin ang file ng mga katangian ng pareho sa kanila.
Properties File ng Log4j at Java Util Package
Sample ng Log4j Properties file:
# Paganahin ang Root logger opsyon log4j.rootLogger = INFO, file, stdout # Maglakip ng mga appender upang mai-print ang file log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Maglakip ng mga appender upang mag-print sa console log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n
- Ang file ng mga katangian ng Log4j ay nilikha sa loob ng src folder ng proyekto.
- log4j.appender.file = org.apache.log4j.RollingFileAppender -> I-print ang lahat ng mga log sa isang file
- log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> I-print ang lahat ng mga log sa console
- log4j.appender.file.File = D: loglogging.log -> Tinutukoy ang lokasyon ng file ng log
- log4j.appender.file.MaxFileSize = 10MB -> Maximum na laki ng file ng log sa 10MB
- log4j.appender.file.MaxBackupIndex = 5 -> Nililimitahan ang bilang ng mga backup na file sa 5
- log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Tinutukoy ang pattern kung saan mai-print ang mga log sa file ng log.
- log4j.appender.file.layout.ConversionPattern =% d {yyyy-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Itinatakda ang default na pattern ng conversion.
Halimbawang Java Util Package Properties File
handlers = java.util.logging.ConsoleHandler .level = WARNING # Ang output ay maiimbak sa default na direktoryo java.util.logging.FileHandler.pattern =% h / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Antas ng mga log ay limitado sa WARNING at sa itaas. java.util.logging.ConsoleHandler.level = WARNING java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Dito,
- java.util.logging.FileHandler.pattern =% h / java% u.log -> Isusulat ang mga file ng log saC: TEMPjava1.log
- java.util.logging.FileHandler.limit = 50000 ->Ang maximum na halaga na isinusulat ng logger sa anumang isang file sa mga byte.
- java.util.logging.FileHandler.count = 1 -> Tinutukoy ang bilang ng mga output file
- java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Nabanggit ang ginamit na formatter para sa pag-format. Dito ginagamit ang XML Formatter.
- java.util.logging.ConsoleHandler.level = BABALA -> Itinatakda ang antas ng default na pag-log sa WARNING
- java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Tinutukoy angFormatterpara magamit ng lahatConsoleHandler‘S. Dito, ginagamit ang SimpleFormatter.
Mga Kaganapan sa pag-log
Upang mag-log in ang mga kaganapan , kailangan mong tiyakin na magtalaga ka ng isang antas upang madaling mai-file ang mga kaganapan. Upang magtalaga ng isang antas at banggitin ang isang mensahe maaari mong gamitin ang mga pamamaraan sa ibaba:
Paraan 1:
logger.log (Level.INFO, 'Ipakita ang mensahe')
Dito, antas ay INFO at ang mensahe na mai-print ay 'Display Message'.
Paraan 2:
logger.info ('Ipakita ang mensahe')
Upang matiyak na ang Logger sa Java, nag-log lamang ng mga kaganapan na nasa o sa itaas ng antas ng INFO, maaari mong gamitin ang setLevel () pamamaraan na tinalakay sa itaas.
Ngayon, na tinalakay ko kung paano gamitin ang Logger sa Java, talakayin natin ang susunod na bahagi ng arkitektura ng Log4j, ibig sabihin, Appenders.
Appender o Handler
Responsable ang Appender o Handler sa pagrekord ng mga kaganapan sa pag-log sa isang patutunguhan. Ang bawat logger ay may access sa maraming mga handler at tumatanggap ng log message mula sa logger. Pagkatapos, gumagamit ang Mga Appender ng Mga Formatter o Layout upang mai-format ang mga kaganapan at ipadala ang mga ito sa kaukulang patutunguhan.
Maaaring patayin ang isang Appender gamit ang pamamaraan ng setLevel (Level.OFF). Ang dalawang pinaka pamantayang humahawak sajava.util.logging
ang pakete ay ang mga sumusunod:
- FileHandler: Sulatin ang mensahe ng pag-log upang mai-file
- ConsoleHandler: Nagsusulat ng mensahe sa pag-log sa console
Para sa, iyong mas mahusay na pag-unawa, ipinaliwanag ko ang ilang mga Appenders sa seksyon ng mga pag-aari.
Layout o Mga Formatter
Ang layout ng Mga Formatter ay ginagamit upang mai-format at mai-convert ang data sa isang kaganapan sa pag-log.Ang mga balangkas ng pag-log ay nagbibigay ng Mga Layout para sa HTML, XML, Syslog, JSON, simpleng teksto at iba pang mga log.
- SimpleFormatter : Bumubuo ng mga text message na may pangunahing impormasyon.
- XMLFormatter : Bumubuo ng mensahe ng XML para sa log
Para sa, iyong mas mahusay na pag-unawa, ipinaliwanag ko ang ilang mga Layout sa seksyon ng mga pag-aari.Sa pamamagitan nito, napunta kami sa dulo ng blog na ito sa 'Logger in Java'. Inaasahan kong malinaw kayo sa itinuro sa inyo sa artikulong ito.
Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer. Ang kurso ay dinisenyo upang bigyan ka ng isang panimula sa pag-program ng Java at sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring.
May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'Logger in Java' at babalikan ka namin sa lalong madaling panahon.