Logging in Java with slf4j文档格式.docx
- 文档编号:4192920
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:14
- 大小:73.81KB
Logging in Java with slf4j文档格式.docx
《Logging in Java with slf4j文档格式.docx》由会员分享,可在线阅读,更多相关《Logging in Java with slf4j文档格式.docx(14页珍藏版)》请在冰点文库上搜索。
K2,k2tog,kacrosstolast4sts,ssk,k2.RepDecRoweveryotherrow10(12,13,14)timesmore--38(40,46,48)sts.Continueeventoapprox211/2(22,221/2,23)inchesfrombegendingwithaWSrow."
means-mostgrandmothersknowthat-andtellheryouwritethosebutforcomputers.
She'
llnodandunderstandcompletely.
IfyouarelikemostlearningprogrammersyouhaveNOideawhatthequoteabovemeansatall.
Well,itispartofaknittingrecipeforasweater[
1
]andthatiswhatprogrammingisbasicallyallabout-writingknittingrecipesforcomputers.
Programmingisacraftittakesyearstomaster
PeterNorvigwritesinhisonlinearticle
TeachYourselfProgramminginTenYears
-arecommendedread-thatittakes10yearsorperhaps10000hoursofdeliberatepracticetodevelopexpertiseinanarea.
Forprogrammersthatmeanswritingprogramsandreadingprograms,butunfortunatelythereisnotyetageneraltraditionofexperiencedprogrammersmentoringnewprogrammersinperson,soyouwillhavetolearnalotonyourown.
Byusingthetechniquesdescribedinthisdocumentyouwillhaveagreaterchancetoavoidsomeveryembarrassingandexhaustingexperiencesinyourfuturejobs,andhopefullynothavingtounlearnahabitortwo.
Ifyouneedtogetexperiencewhilestudyingorpreparingtogetajob,IwouldrecommendthatyoulocateanOpenSourceprojectwhichyouaregenuinelyinterestedin-forinstanceifyouneeditinyourownprojects-andhelpthem.
Thiscanbothbeprogramming,butalsowritingdocumentation-asgooddocumentationrequiresthoroughunderstandingofthesoftwarebeingdocumented.
Thisalsogivesyouexperienceworkingwithateamwhichcommunicateelectronicallyandusetoolsthatallowmultipledeveloperstoworkonthesameprojectwithoutdisturbingeachothersfiles.
BychoosinganOpenSourceprojectyoucandemonstratewhatyouhavedonetoafutureemployeraspartoftheinterviewiftheyaskwhatexperienceyouhave.
Andyoutryandtelltheyoungpeopleoftodaythat.....theywon'
tbelieveyou."
JavawasdesignedbySunMicrosystems,whichhappenedtomakealivingatthetimesellingcomputersrunningtheSundialectoftheUnixoperatingsystem.
ItisnotasurprisethenthatJavaprogramstendtolooklikeotherUnixprograms,whichweredesignedtoworkonthecomputeryouseeinthepicturebelow.
PictureshowsKenThompsonandDennisRitchieworkingatthefirstrealUnixmachine.
Pleasenotethatthereisrealpaperinthe"
typewriters"
theclosetbehindthemenis
the
computer,andthatthecircularcontainersontopofthecomputercontainprogramanddataonpapertape.
Thingsweredifferentin1973.
UnderUnixeveryprogramhasthreeinput/outputconnectionsavailable-namely
∙standardinput
-thisprovidesthethingstheusertypetotheprogram.
(Java:
System.in)
∙standardoutput
-thisisnormalinformation(Java:
System.out)
∙standarderror
-thisisinformationabouterrorsituations(Java:
System.err)
TheUnixphilosphywasstatedbyMcIlroy[
3
]tobe"
Writeprogramsthatdoonethinganddoitwell.Writeprogramstoworktogether.Writeprogramstohandletextstreams,becausethatisauniversalinterface.
.Thismeansyoucanlettheoutputofoneprogrambetheinputofanotherprogram-calledapipe
-encouragingsmallspecializedprogramsbeingcombinedtocompletealargertask,likecreatingalistofwordsinafilebyfirstextractingallwords,sortingthem,andtheneliminateduplicates.
UnfortunatelythishasnotcaughtoninJava,mostlybecausetheJavaenvironmenttakestoolongtostartforsmallprogramstobereallyusable.
Theconceptsarestillthesame,however.
SothesimplestpossibleJavaprogramusesSystem.outtoprintouttheline"
HelloWorld"
:
1:
publicclassHelloWorld{
2:
publicstaticvoidmain(String[]args){
3:
System.out.println("
);
4:
}
5:
Thisshouldbenamed"
HelloWorld.java"
andiscompilablefromthecommandlinewith"
javacHelloWorld.java"
andthecompiledclasscanthenbeinvokedwith"
javaHelloWorld"
.
Line1declaresthistobetheclassnamedHelloWorld-thereisno"
package"
linesoitisjustHelloWorldinsteadofe.g.com.bigcoorporation.HelloWorld.
Line2isthemagicwordsneededtobeabletoinvoketheclassfilefromthecommandlineas"
Line3printstheline"
tostandardoutput.
Now,whydid
that
happen?
Oneoftheunfortunatesideeffectsofprogrammingforalivingisthatpeopleareusingyourprograms,andtheytendtofindthatyourprogramsdonotworkas
they
expect-thisistraditionallycalleda"
bug"
[
2
]-anditisthenyourresponsibilitytoidentifyandcorrecttheproblem.
Inmostcases,allyouhavetoworkwithistheuserdescribingwhathappenedandwhatwasexpected.
Theprogramhasendedandisforallpracticalpurposesunavailabletoyou.
Henceawayofsavinginformationfromwithintheprogramforlaterisneeded,muchinthesamewaythatlogbooksareusedonshipstoaidinnavigation.
Theterm"
logging"
isusedingeneralfortheprocessofsystematicallysavinginformationforlater.
SeveralloggingsolutionsareavailabletoJavaprogrammers.
Allofthesegenerallysharetheabilitytolog:
∙Theareaofthecodecontainingthelogstatement.
∙Thetimewhenthelogstatementwasinvoked.
∙Animportancelevelofthislogstatement.
∙Anexception(withaccompanyingstacktrace).
∙Alogmessage.
Thishasproventobeveryhelpfulforlogsintendedforthehumanreader.
Facilitiesavailableinsomeloggingframeworksinclude:
∙storingeventsinadatabase
∙alertusersbyemail,instantmessagingoranyotherelectronicmeans
(butthatistooadvancedtobecoveredinthisintroduction-itisjusttogiveyouanideaofwhatispossible)
TheHelloWorldprogramrewrittentousetheSLF4Jloggingsolution(fullinstructionsareinappendixA)andputinthe"
demo"
package,lookslike:
====
packagedemo;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
publicclassHelloWorld{
Loggerlog=LoggerFactory.getLogger(HelloWorld.class);
log.info("
}
=====
andgeneratesthefollowingoutput:
====
2009-06-0710:
38:
21demo.HelloWorldmain
INFO:
HelloWorld
Thefirstlinecontainsadateandtimestamp,thenameofthelogger-here"
demo.HelloWorld"
-andthenameofthemethodcontainingthelog.infostatement-here"
main"
Thesecondlinecontainstheimportancelevel-here"
INFO"
-andthemessagepassed
-here"
Notehowmuchofthisinformationwasderivedautomatically!
Ifweaddamethodcallwithawait,wecanseethatthetimestampchanges,andthatthemethodnamesinthelogcorrectlyindicatesifthelogstatementisdonefrom"
or"
waitTwoSeconds"
publicclassHelloWorld2{
publicstaticvoidmain(String[]args)throwsException{
Loggerlog=LoggerFactory.getLogger(HelloWorld2.class);
waitTwoSeconds(log);
Done"
privatestaticvoidwaitTwoSeconds(Loggerlog)throwsException{
Thread.sleep(2000);
Slept2seconds"
=====
withthefollowingoutput:
53:
52demo.HelloWorld2main
54demo.HelloWorld2waitTwoSeconds
Slept2seconds
54demo.HelloWorld2main
Done
Ifyouwereshownthislog,youwouldbeabletodeterminethattheprogramhadrunasexpectedtothestatementlogging"
inthemainmethodofdemo.HelloWorld2andyoushouldnotlookforproblemshappeningbeforethatstatement.
Logginginformationstoredinvariables
Ifyouneedtoaddinformationstoredinavariable,slf4jallowyoutospecifythiswith{}.(Note:
ExampleworkswithJava5andlater)
publicclassZeroToFour{
Loggerlog=LoggerFactory.getLogger(ZeroToFour.class);
for(inti=0;
i<
5;
i++){
i={},i*i={}"
i,i*i);
whichoutputs
2009-06-0713:
23:
57demo.ZeroToFourmain
i=0,i*i=0
i=1,i*i=1
i=2,i*i=4
i=3,i*i=9
i=4,i*i=16
Allobjectscanbeloggedinthisway,andthetoString()methodiscalledtogetthestringtolog.Notethatint,long,double,floats,charsarenotobjects,butthatinJava5andlatertheyareinvisiblyconvertedcorrectly.
Loggingproblems
Allprogramsregardlessofprogramminglanguagemus
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Logging in Java with slf4j