PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/proc/self/root/proc/thread-self/root/usr/share/doc/analog/
Upload File :
Current File : //proc/self/root/proc/thread-self/root/usr/share/doc/analog/logfmt.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<link rel=stylesheet type="text/css" href="anlgdocs.css">
<LINK REL="SHORTCUT ICON" HREF="favicon.ico">
<title>Readme for analog -- log formats</title>
</head>

<body>
[ <a href="Readme.html">Top</a> | <a href="custom.html">Up</a> |
<a href="logfile.html">Prev</a> | <a href="alias.html">Next</a> |
<a href="map.html">Map</a> | <a href="indx.html">Index</a> ]
<h1><img src="analogo.gif" alt=""> Analog 6.0: Log formats</h1>
<hr size=2 noshade>

This section is about how to tell analog the format of your logfile. <b>Most
people don't need to do this because analog can detect the format
automatically</b> -- try it first and see, because you will save yourself a
lot of trouble! But if you do need to specify the log format explicitly, here
is how to do it.

<p>
The basic command to specify a log format looks like
<pre>
LOGFORMAT format
</pre>
-- we'll discuss what the formats can be in a minute. Or if you are using the
Apache server, you will probably find it more convenient to use
<pre>
APACHELOGFORMAT apacheformat
</pre>
instead.
<p>
The <kbd>LOGFORMAT</kbd> and <kbd>APACHELOGFORMAT</kbd>
commands only apply to logfiles specified with a <kbd>LOGFILE</kbd> command
<em>later</em> in the <em>same</em> configuration file. So you must put the
<kbd>LOGFORMAT</kbd> above the <kbd>LOGFILE</kbd> to which it refers. If you
declare your logfiles on the command line, or drag them onto the app on the
Mac, you must use <a href="#DEFAULTLOGFORMAT"><kbd>DEFAULTLOGFORMAT</kbd> or
<kbd>APACHEDEFAULTLOGFORMAT</kbd></a> instead. This is so that different
logfiles can have different formats, like this:
<pre>
LOGFILE log0
LOGFORMAT format1
LOGFILE log1
LOGFORMAT format2
LOGFILE log2
LOGFILE log3
</pre>
In this example, <kbd>log1</kbd> is in <kbd>format1</kbd>, <kbd>log2</kbd> and
<kbd>log3</kbd> are in <kbd>format2</kbd>, and <kbd>log0</kbd> isn't in either
format -- analog will try and detect which format it's in.

<hr size=1 noshade>
<a name="Apache">The <kbd>APACHELOGFORMAT</kbd> command</a> is followed by the
<kbd>LogFormat</kbd> from your Apache <kbd>httpd.conf</kbd> file. For example,
if your <kbd>httpd.conf</kbd> contained the following lines:
<pre>
LogFormat "%h %l %u %t %v \"%r\" %&gt;s %b" myformat
CustomLog /var/log/apache/access.log myformat
</pre>
then your <kbd>analog.cfg</kbd> should contain
<pre>
APACHELOGFORMAT (%h %l %u %t %v \"%r\" %&gt;s %b)
LOGFILE /var/log/apache/access.log
</pre>
(Use parentheses instead of quotes round the argument if the argument already
contains quotes.) Analog
understands all Apache log formats, with the exception that it won't parse
Apache's <kbd>&quot;%...{format}t&quot;</kbd> construction for customised
times: if you have this construction, you will have to use ordinary
<kbd>LOGFORMAT</kbd> instead. (This is because
<kbd>&quot;%...{format}t&quot;</kbd> is sometimes localised.)

<hr size=1 noshade>
<a name="fmtsyntax">The possible formats</a> for use with the
<kbd>LOGFORMAT</kbd> command are of two
types. First there are some symbolic words, and then there are <i>log format
strings</i>. We'll look at the words first.

<p>
<a name="fmtwords">There are format words</a> for all the built-in formats
analog knows about.
You might need one of these words if your logfile is in a standard format, but
analog can't detect which format it's in for some reason; for example, maybe
the first line is corrupt; or maybe analog can't tell whether you're using
North American or international dates. So for example
<pre>
LOGFORMAT COMMON
</pre>
will select common format; you can also have <kbd>COMBINED</kbd>,
<kbd>REFERRER</kbd>, <kbd>BROWSER</kbd>, <kbd>EXTENDED</kbd>,
<kbd>MICROSOFT-NA</kbd> (North American date format),
<kbd>MICROSOFT-INT</kbd> (international date format),
<kbd>WEBSITE-NA</kbd>, <kbd>WEBSITE-INT</kbd>,
<kbd>MS-EXTENDED</kbd> (Microsoft's attempt at extended format),
<kbd>WEBSTAR-EXTENDED</kbd> (WebSTAR's version of extended format),
<kbd>MS-COMMON</kbd> (a buggy version of common format in some versions
of Microsoft software), <kbd>NETSCAPE</kbd>, <kbd>WEBSTAR</kbd> or
<kbd>MACHTTP</kbd>. All these
formats were defined at the end of the <a href="logfile.html#formats">previous
section</a>. You can also use the special word <kbd>AUTO</kbd> to return to
automatic detection.

<p>
<a name="fmtstrings">If your logfile</a> is not in one of the recognised
formats, you can tell analog
about your format using a log format string. You only ever need this if your
logfile has lines which are not in one of the standard formats. (And even if it
isn't in a standard format, if you're using the Apache web server, you will
find <kbd><a href="#Apache">APACHELOGFORMAT</a></kbd> easier.)
<p>
The format string consists of a template for the logfile line, with the
various fields and special characters replaced by codes as follows. Please
note that these codes are case sensitive -- for example, <kbd>%b</kbd> is
completely different from <kbd>%B</kbd>!
<dl compact>
  <dt><kbd>%S</kbd><dd>host (the client hostname, or address of the computer
      making the request)
  <dt><kbd>%s</kbd><dd>numerical IP address of client (if recorded in a
      separate field; used when <kbd>%S</kbd> is empty)
  <dt><kbd>%r</kbd><dd>file requested
  <dt><kbd>%q</kbd><dd>query string (part of filename after <kbd>?</kbd>, if
      recorded in a separate field)
  <dt><kbd>%B</kbd><dd>browser
  <dt><kbd>%A</kbd><dd>browser with <kbd>+</kbd>'s instead of spaces
  <dt><kbd>%f</kbd><dd>referrer
  <dt><kbd>%u</kbd><dd>user (tip: a cookie or session id can usefully be
      defined as <kbd>%u</kbd> too)
  <dt><kbd>%v</kbd><dd>virtual host (the server hostname, also called the
      virtual domain)
  <dt><kbd>%d</kbd><dd>day of the month
  <dt><kbd>%m</kbd><dd>month in digits
  <dt><kbd>%M</kbd><dd>month, three letter English abbreviation
  <dt><kbd>%y</kbd><dd>year, last two digits
  <dt><kbd>%Y</kbd><dd>year, four digits
  <dt><kbd>%Z</kbd><dd>year, two or four digits (less efficient)
  <dt><kbd>%h</kbd><dd>hour of the day
  <dt><kbd>%n</kbd><dd>minute of the hour
  <dt><kbd>%a</kbd><dd><kbd>a</kbd> or <kbd>A</kbd> for am, or <kbd>p</kbd> or
      <kbd>P</kbd> for pm, if <kbd>%h</kbd> is in the 12-hour clock. (So to
      match &quot;am&quot; you need <kbd>%am</kbd> and to match &quot;AM&quot;
      you need <kbd>%aM</kbd>)
  <dt><kbd>%U</kbd><dd>&quot;Unix time&quot; (seconds since beginning of 1970,
      GMT). If it includes decimals, use <kbd>%U.%j</kbd>
  <dt><kbd>%b</kbd><dd>number of bytes transferred
  <dt><kbd>%t</kbd><dd>processing time in seconds
  <dt><kbd>%T</kbd><dd>processing time in milliseconds
  <dt><kbd>%D</kbd><dd>processing time in microseconds
  <dt><kbd>%c</kbd><dd>HTTP status code
  <dt><kbd>%C</kbd><dd>code words used instead of HTTP status code in some
      servers -- only used internally
  <dt><kbd>%j</kbd><dd>junk: ignore this field (field can be empty too)
  <dt><kbd>%w</kbd><dd>white space: spaces or tabs
  <dt><kbd>%W</kbd><dd>optional white space
  <dt><kbd>%%</kbd><dd><kbd>%</kbd> sign
  <dt><kbd>\n</kbd><dd>new line
  <dt><kbd>\t</kbd><dd>tab stop
  <dt><kbd>\\</kbd><dd>single backslash
</dl>
So for example, the common log format, which looks like
<pre>
jay.bird.com - fred [25/Dec/1998:17:45:35 +0000]
"GET /~sret1/ HTTP/1.0" 200 1243
</pre>
(except all on one line)
could be represented by the <kbd>LOGFORMAT</kbd> command
<pre>
LOGFORMAT (%S - %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b)
</pre>
In other words, it's just the sample line but with the hostname replaced by
<kbd>%S</kbd>, the username by <kbd>%u</kbd> etc.
(The parentheses are needed because the argument contains spaces.)
Or take another example: if you had lines which looked like
<pre>
Fri 25/12/98 5:45pm, /~sret1/, jay.bird.com, 200, 1243,
http://www.site.com, Mozilla/2.0 (X11; I; HP-UX A.09.05)
</pre>
(all on one line again), you could use the format
<pre>
LOGFORMAT (%j %d/%m/%y %h:%n%am, %r, %S, %c, %b, %f, %B)
</pre>
Remember: if you have trouble writing a <kbd>LOGFORMAT</kbd> string, you can
<a href="debug.html#debugs">turn debugging on</a>, and analog will
report where each line was corrupt. If you still have trouble, you can write
to the <a href="mailing.html">analog-help mailing list</a>.
<hr size=1 noshade>
A logfile can sometimes have lines in several different formats. So you can
specify several <kbd>LOGFORMAT</kbd> commands in a row, and they will all
apply to the next logfile. This is also useful if the format of your logfile
changes half way through. So in this example:
<pre>
LOGFORMAT COMMON
LOGFORMAT COMBINED
LOGFILE log1
LOGFORMAT (%j %d/%m/%y %h:%n%am, %r, %S, %c, %b, %f, %B)
LOGFILE log2
LOGFILE log3
</pre>
<kbd>log1</kbd> has lines in both common and combined format, whereas
<kbd>log2</kbd> and <kbd>log3</kbd> have lines just in the format in the
previous example.
<p>
If you specify several formats, analog tries to match each line to the first
format first, then if that fails the next, and so on, so the order of the
formats is important. Usually you want to specify the most common one
first, to minimise the time spent trying to match lines to inappropriate
formats. 

<hr size=1 noshade>
<a name="DEFAULTLOGFORMAT">I suggested above</a> that any logfile which
doesn't have a <kbd>LOGFORMAT</kbd>
command earlier in the same configuration file, or is specified on the command
line, is auto-detected. But this
isn't quite true. Actually such logfiles get a special format called the
<em>default log format</em>. The default format starts off as auto-detection,
but you can change it if you want with the <kbd>DEFAULTLOGFORMAT</kbd>
command. This command works exactly the same as the <kbd>LOGFORMAT</kbd>
command -- it understands the same formats, and if you have several
<kbd>DEFAULTLOGFORMAT</kbd> commands, they accumulate in the same way. The
difference is that they don't need to be put in any particular place. (There
is also <kbd>APACHEDEFAULTLOGFORMAT</kbd>, which has the same effect but uses
the Apache LogFormat strings.)
<p>
So let's go back to the first example:
<pre>
LOGFILE log0
LOGFORMAT format1
LOGFILE log1
LOGFORMAT format2
LOGFILE log2
LOGFILE log3
</pre>
Here <kbd>log0</kbd> actually gets the default log format. If there are no
<kbd>DEFAULTLOGFORMAT</kbd> commands, the default will be auto-detection. But
if there are <kbd>DEFAULTLOGFORMAT</kbd> commands, even in another
configuration file, that will be the format of <kbd>log0</kbd>.
<p>
The times you need to use the <kbd>DEFAULTLOGFORMAT</kbd> instead of the
<kbd>LOGFORMAT</kbd> are if you want to change the format of logfiles which
aren't given in a <kbd>LOGFILE</kbd> command -- for example, ones specified on
the command line, or dragged onto the program icon on a Mac, or compiled in.

<hr size=1 noshade>
<a name="fmtmisc">A couple more technical details</a> and tips about
<kbd>LOGFORMAT</kbd> commands.

<p>
The &quot;Unix time&quot;, <kbd>%U</kbd>, is always recorded in GMT. So you
will probably need to use a
<kbd><a href="output.html#TIMEOFFSET">LOGTIMEOFFSET</a></kbd>
command to convert to your local timezone. Also, it's just the integer part of
the time, so if you have decimals you will have to use <kbd>%U.%j</kbd> .

<p>
The log formats which analog can handle are those which are known as
<i>instantaneously decipherable</i>: in practice, this means that the character
which terminates a string can never occur in the string. So for example, in
common format, which looks like
<pre>
LOGFORMAT (%S - %u [%d/%M/%Y:%h:%n:%j %j] "%j %r %j" %c %b)
</pre>
if the hostname ever contained a space, the line would be marked as corrupt,
because analog terminates the host at the first space, <em>not</em> at the
first occurrence of space-dash-space, and then the rest of the line wouldn't
match. Of course, hostnames should never contain spaces, so this shouldn't be a
problem. There are a couple of other restrictions: if there is any date or
time information, then the year, month, date, hour and minute must all be
present: and the same information may not occur twice in the format (so you
can't have both <kbd>%m</kbd> and <kbd>%M</kbd>, for example, because these
both represent the month; make one of them a <kbd>%j</kbd> to have it ignored).

<p>
<a name="starredfmt">Sometimes</a> you need to read one of the fields in a
logfile, but not analyse it.
For example, if you have a separate common log and referrer log, the referrer
log might look like
<pre>
http://guide-p.infoseek.com/Titles -> /~sret1/analog/
</pre>
But the requests for <kbd>/~sret1/analog/</kbd> would already have been
counted when reading the main logfile, so you don't want to count them again
now. You get round this by specifying a <kbd>*</kbd> in that item in the
format string, like this:
<pre>
LOGFORMAT (%f -> %*r)
</pre>

<p>
A tip: sometimes it is more efficient to specify two or more adjacent fields
to ignore with a single <kbd>%j</kbd>, as long as the whole group ends with a
recognisable character. So common format is more efficiently specified as
<pre>
LOGFORMAT (%S - %u [%d/%M/%Y:%h:%n:%j] "%j %r %j" %c %b)
</pre>
-- in the date and time <kbd>[25/Dec/1998:17:45:35 +0000]</kbd>, the seconds
and the timezone can be ignored with a single <kbd>%j</kbd>, extending until
the close-bracket.

<p>
Another tip: <kbd>%j</kbd> can also be used to ignore whole lines, rather than
just fields analog doesn't use. For example, the extended log format ignores
lines beginning with <kbd>#</kbd> by using
<pre>
LOGFORMAT #%j
</pre>
and the Microsoft format ignores lines corresponding to FTP requests with
<pre>
LOGFORMAT (%*S, %*u, %m/%d/%y, %h:%n:%j, %j)
</pre>
If those formats had not been used, the lines would have been incorrectly
marked as corrupt.
<hr size=1 noshade>
<a name="fmtexamples">Finally</a>, both for reference and as examples, here is
a list of all the fixed formats that analog understands, together with the
example lines from the <a href="logfile.html#formats">previous section</a>
and their built-in definitions (split over two lines where necessary).
<dl>
  <dt><a name="commonfmtex">Common format</a>, <kbd>LOGFORMAT COMMON</kbd>
  <dd><pre>
jay.bird.com - fred [25/Dec/1998:17:45:35 +0000]
      "GET /~sret1/ HTTP/1.0" 200 1243
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r%wHTTP%j" %c %b)
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r" %c %b)
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%r" %c %b)
</pre>
  <dt><a name="mscommonfmtex">Microsoft common format</a>,
      <kbd>LOGFORMAT MS-COMMON</kbd>
  <dd><pre>
jay.bird.com - fred [25/Dec/1998:17:45:35 +0000]
      "GET /~sret1/ "HTTP/1.0" 200 1243
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r%w"HTTP%j" %c %b)
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r" %c %b)
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%r" %c %b)
</pre>
  <dt><a name="combinedfmtex">Combined log</a>, <kbd>LOGFORMAT COMBINED</kbd>
  <dd><pre>
jay.bird.com - fred [25/Dec/1998:17:45:35 +0000] "GET /~sret1/ HTTP/1.0" 200
      1243 "http://www.site.com/" "Mozilla/2.0 (X11; I; HP-UX A.09.05)"
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r%wHTTP%j" %c %b "%f" "%B")
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%j%w%r" %c %b "%f" "%B")
LOGFORMAT (%S %j %u [%d/%M/%Y:%h:%n:%j] "%r" %c %b "%f" "%B")
</pre>
  <dt><a name="reffmtex">Referrer log</a>, <kbd>LOGFORMAT REFERRER</kbd>
  <dd><pre>
[25/Dec/1998:17:45:35] http://www.site.com/ -> /~sret1/
<i>or</i> http://www.site.com/ -> /~sret1/
LOGFORMAT ([%d/%M/%Y:%h:%n:%j] %f -> %*r)
LOGFORMAT (%f -> %*r)
</pre>
  <dt><a name="browfmtex">Browser log</a>, <kbd>LOGFORMAT BROWSER</kbd>
  <dd><pre>
[25/Dec/1998:17:45:35] Mozilla/2.0 (X11; I; HP-UX A.09.05)
LOGFORMAT ([%d/%M/%Y:%h:%n:%j] %B)
</pre>
  <dt><a name="msnafmtex">Microsoft log, North American dates</a>,
      <kbd>LOGFORMAT MICROSOFT-NA</kbd>
  <dd><pre>
192.64.25.41, -, 12/25/98, 17:45:35, W3SVC1, HOST1, 192.16.225.10,
      2178, 303, 1243, 200, 0, GET, /~sret1/, -,
192.64.25.41, -, 12/25/2001, 17:45:35, W3SVC1, HOST1, 192.16.225.10,
      2178, 303, 1243, 200, 0, GET, /~sret1/, -,
LOGFORMAT (%S, %u, %m/%d/%Z, %h:%n:%j, W3SVC%j, %j, %v,
      %T, %j, %b, %c, %j, %j, %r, %q,)
LOGFORMAT (%*S, %*u, %m/%d/%Z, %h:%n:%j, %j)
</pre>
  <dt><a name="msintfmtex">Microsoft log, international dates</a>,
      <kbd>LOGFORMAT MICROSOFT-INT</kbd>
  <dd><pre>
192.64.25.41, -, 25/12/98, 17:45:35, W3SVC1, HOST1, 192.16.225.10,
      2178, 303, 1243, 200, 0, GET, /~sret1/, -,
192.64.25.41, -, 25/12/2001, 17:45:35, W3SVC1, HOST1, 192.16.225.10,
      2178, 303, 1243, 200, 0, GET, /~sret1/, -,
LOGFORMAT (%S, %u, %d/%m/%Z, %h:%n:%j, W3SVC%j, %j, %v,
      %T, %j, %b, %c, %j, %j, %r, %q,)
LOGFORMAT (%*S, %*u, %d/%m/%Z, %h:%n:%j, %j)
</pre>
  <dt><a name="websitenafmtex">WebSite log, North American dates</a>,
      <kbd>LOGFORMAT WEBSITE-NA</kbd>
  <dd><pre>
12/25/98 17:45:35  jay.bird.com  host1  Server  fred  GET  /~sret1/
   http://www.site.com/    Mozilla/2.0 (X11; I; HP-UX A.09.05)  200  1243  2178
LOGFORMAT (%m/%d/%y %h:%n:%j\t%S\t%v\t%j\t%u\t%j\t%r\t%f\t%j\t%B\t%c\t%b\t%T)
</pre>
  <dt><a name="websiteintfmtex">WebSite log, international dates</a>,
      <kbd>LOGFORMAT WEBSITE-INT</kbd>
  <dd><pre>
25/12/98 17:45:35  jay.bird.com  host1  Server  fred  GET  /~sret1/
   http://www.site.com/    Mozilla/2.0 (X11; I; HP-UX A.09.05)  200  1243  2178
LOGFORMAT (%d/%m/%y %h:%n:%j\t%S\t%v\t%j\t%u\t%j\t%r\t%f\t%j\t%B\t%c\t%b\t%T)
</pre>
  <dt><a name="machttpfmtex">MacHTTP format</a>, <kbd>LOGFORMAT MACHTTP</kbd>
  <dd><pre>
12/25/98  17:45:35   OK    jay.bird.com  /~sret1/  1243
LOGFORMAT (%m/%d/%y\t%h:%n:%j \t%C%w%S\t%r\t%b)
</pre>
</dl>
The extended log, Netscape log and WebSTAR log don't have any built-in
formats: analog constructs their formats from their header lines.

<hr size=2 noshade>
Go to the <a href="http://www.analog.cx/">analog home page</a>.
<p>
<address>Stephen Turner
<br>19 December 2004</address>
<p><em>Need help with analog? <a href="mailing.html">Use the analog-help
mailing list</a>.</em>
<p>
[ <a href="Readme.html">Top</a> | <a href="custom.html">Up</a> |
<a href="logfile.html">Prev</a> | <a href="alias.html">Next</a> |
<a href="map.html">Map</a> | <a href="indx.html">Index</a> ]
</body> </html>