ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 00 00 00 01 00 08 06 00 00 00 5c 72 a8 | .PNG........IHDR.............\r. |
0020 | 66 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0e c3 00 | f....bKGD..............pHYs..... |
0040 | 00 0e c3 01 c7 6f a8 64 00 00 00 07 74 49 4d 45 07 e0 06 09 13 19 17 2e 6b 3a fe 00 00 20 00 49 | .....o.d....tIME........k:.....I |
0060 | 44 41 54 78 da ec bd 7d d4 65 59 59 27 f6 7b 9e bd cf c7 bd f7 fd aa ef 6e ba 9b 86 16 95 96 41 | DATx...}.eYY'.{.........n......A |
0080 | e4 2b 88 4e cb 40 8b 62 54 70 10 50 5c 63 26 93 4c 92 15 65 c8 ac a5 cb 38 c9 ac 64 ad c9 98 ac | .+.N.@.bTp.P\c&.L..e....8..d.... |
00a0 | c8 a0 0c 30 a8 59 33 10 33 66 50 c1 04 33 66 0d 4a 40 67 8c 3a ea 38 42 94 56 50 41 c0 86 ee ae | ...0.Y3.3fP..3f.J@g.:.8B.VPA.... |
00c0 | ae aa b7 de 8f 7b 3e f6 de cf 93 3f f6 de e7 9e 7b eb ed b6 a1 e9 02 aa ce af d6 5d 6f d5 5b b7 | .....{>....?....{..........]o.[. |
00e0 | ea bd f7 9e b3 9f cf df f3 7b 80 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 | .........{...&L.0a....&L.0a....& |
0100 | 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 | L.0a....&L.0a....&L.0a....&L.0a. |
0120 | 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c | ...&L.0a....&L.0a....&L.0a....&L |
0140 | 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 | .0a....&L.0a....&L.0a....&L.0a.. |
0160 | 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 | ..&L.0a....&L.0a....&L.0a....&L. |
0180 | 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 | 0a....&L.0a....&L.0a....&L.0a... |
01a0 | 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 | .&L.0a....&L.0a....&L.0a....&L.0 |
01c0 | 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 26 4c 98 30 61 c2 84 09 13 | a....&L.0a....&L.0a....&L.0a.... |
01e0 | 26 4c 98 30 e1 0b 07 ba d1 df e0 bd f7 be b8 6e 96 c7 bf 76 7c bc 7c 41 10 60 6b 6b 0b 5b 5b 5b | &L.0...........n...v|.|A.`kk.[[[ |
0200 | 98 cf e7 b8 e3 8e 3b 70 ea d4 29 a8 2a ba ae 83 73 0e 22 02 e7 1c 54 15 45 51 60 36 9b 81 88 70 | ......;p..).*...s."...T.EQ`6...p |
0220 | 70 70 80 4f 7d ea 53 38 3c 3c c4 e1 e1 21 1e 7e f8 61 54 55 e9 ca a2 78 1f a0 af b9 ef 8f 3e 72 | pp.O}.S8<<...!.~.aTU...x......>r |
0240 | 3c dd 4e d7 07 cf 7a e6 33 17 82 f0 8e e5 b2 7b 45 db b6 c5 a9 53 a7 68 6b 6b 0b db db db 78 ca | <.N...z.3......{E....S.hkk....x. |
0260 | 53 9e 82 9d 9d 1d 00 40 d7 75 08 21 40 55 e3 cd 4e 04 6b 2d ea ba 86 88 e0 ea d5 ab b8 ff fe fb | S......@.u.!@U..N.k-............ |
0280 | 71 7c 7c 8c 83 83 03 3d 3c 3c 0c e7 ce 9d 7b 70 6b 6b f1 33 44 f8 ef de f7 be f7 f7 37 fa 67 c9 | q||....=<<....{pkk.3D.......7.g. |
02a0 | 37 fa 1b 14 09 b6 eb dd 53 9d f7 c3 f7 54 75 78 88 c8 f0 fb fc 77 22 82 10 02 bc f7 08 21 0c cf | 7.......S....Tux.....w"......!.. |
02c0 | 59 fb e0 98 61 8d 2d 88 e8 05 00 95 d3 b1 7c 6c d8 dd dd 7d fc 4e 87 50 8a e8 5f 55 d5 52 55 29 | Y...a.-.......|l...}.N.P.._U.RU) |
02e0 | 5f 0f 63 0c 98 19 cc 0c 22 5a bb c6 e3 6b c8 cc b0 d6 82 88 86 6b 1d 42 20 55 b5 80 de 26 aa 2f | _.c....."Z...k.......k.B.U...&./ |
0300 | 57 c5 4d 71 4d ed 8d fe 06 fb ae 55 95 70 1c 6f 86 6b 0d 80 aa 82 e8 d1 ef c9 b1 81 18 3f d7 58 | W.MqM......U.p.o.k...........?.X |
0320 | 0b cb 64 9d 0f 32 1d ed 47 c7 5f 7b c1 d7 16 52 15 cf 11 09 0f dd 7f ff 03 9f fc f8 c7 3f 16 3e | ..d..2..G._{...R.............?.> |
0340 | 77 03 20 a2 aa 66 7c d9 88 68 78 30 33 44 e4 9a 6b 37 be 86 d9 48 64 03 9f 9f 9f c2 62 d6 9b c0 | w....f|..hx03D..k7...Hd.....b... |
0360 | 39 de 14 11 80 73 4e 01 5c 8c 16 1f 6b 87 f8 24 ef 90 6f 0e 63 0c 8c 31 6b 37 51 7e 6e 7e 7e 08 | 9....sN.\...k..$..o.c..1k7Q~n~~. |
0380 | 01 3e 84 03 62 9a 4e f8 a3 e0 a9 4f 7d 2a 5d 6e 96 5f e5 43 78 ae b1 c5 2d 4f ba f5 d6 c7 e5 5d | .>..b.N....O}*]n._.Cx...-O.....] |
03a0 | bd 08 98 b9 65 36 c3 41 de 34 02 e3 6b 3c fe fd a6 11 1f 7f 7f f8 0a d0 cd 62 00 ec 8d 6f 00 bc | ....e6.A.4..k<...........b...o.. |
03c0 | 06 91 07 43 08 60 b6 6b 1e 23 87 8b 27 79 fb 1c 1a 8e 6f ac f1 4d 92 fe 00 66 73 b0 91 1d 4c d8 | ...C.`.k.#..'y....o..M...fs...L. |
03e0 | c0 6c 36 b3 4d d3 7c 4a 55 df bd b5 b5 d5 97 a5 75 8f 2b ad 0b 0a 66 3a cc d7 6e 7c 7d 36 bd fe | .l6.M.|JU.......u.+...f:..n|}6.. |
0400 | 49 7f de 34 14 e3 c8 01 00 54 02 40 86 26 03 70 03 a0 eb 1d 54 f5 72 3a af d7 a4 00 8f e5 06 1a | I..4.....T.@.&.p....T.r:........ |
0420 | e7 fd 39 cf 24 22 10 33 d8 f0 83 a4 53 04 f0 68 b8 ef be fb 1c 80 cb 9f af ff 8f 40 90 20 0f 8a | ..9.$".3....S..h...........@.... |
0440 | ca 33 b2 87 7f ac 06 60 f3 ba 8e 0f bf 31 0c 91 80 10 02 d8 dc 1c d7 e6 26 88 00 1c 00 84 e8 ed | .3.....`.....1..........&....... |
0460 | 3f cb 1b 6d e4 f5 37 0b 86 aa 0a 66 46 55 56 4e 69 32 00 d7 13 29 35 73 de 87 b5 62 df a3 19 ef | ?..m..7....fFUVNi2...)5s...b.... |
0480 | c7 1a 0d 78 ef e1 9c 43 01 9d 0c c0 8d 80 b2 28 f2 95 3e d1 4b 88 c8 70 13 e5 1b c2 18 b3 16 12 | ...x...C.......(..>.K..p........ |
04a0 | 3e da 0d a4 b8 09 7a a9 5f 84 06 40 a1 27 5e 9f cd 22 e0 d8 90 8f 8b 7f e3 7b 21 7f 3f b7 83 89 | >.....z._..@.'^..".......{!.?... |
04c0 | 08 37 c9 f9 bf f1 0d c0 d6 62 91 0e ba a2 73 7e cd 53 e4 36 df a6 01 b0 d6 5e 13 01 e4 e2 df b8 | .7.......b....s~.S.6.....^...... |
04e0 | 6a 9c 5b 85 3c 45 00 d7 15 c4 0c 40 06 cb fb b9 a6 00 9b e9 c3 ca 29 04 84 e0 a6 1a c0 0d 52 80 | j.[.<E.....@..........).......R. |
0500 | 82 02 45 f0 01 bd 3f 1e ac 7d 51 14 a8 aa 0a 65 59 ae 1d f0 9c eb e7 af 8f d4 4f 16 11 78 ef e1 | ..E...?..}Q....eY.........O..x.. |
0520 | bd 07 4d 31 c0 17 c2 0c ac 7d f9 cb ea 37 e3 bf df 34 00 ab 62 22 63 67 67 07 65 59 ed ab 86 30 | ..M1.....}...7...4..b"cgg.eY...0 |
0540 | 19 80 1b e1 36 21 22 62 ba dd 8f 2a fa b9 98 67 ad 45 51 14 43 4b 6f 93 14 64 8c 41 5d d7 43 2d | ....6!"b...*...g.EQ.CKo..d.A].C- |
0560 | c1 5a bb 16 76 c6 28 60 a2 00 7c 21 52 00 11 a9 08 f1 57 8e c4 72 44 97 0d 74 36 e2 e3 6b 46 44 | .Z..v.(`..|!R.....W..rD..t6..kFD |
0580 | e8 fb 7e ad 8e 93 1f aa 0a 36 16 c4 74 c1 f7 c1 4c 06 e0 06 80 0f 81 d5 eb 5e 48 4c c0 cd 3e f1 | ..~......6..t...L........^HL..>. |
05a0 | 38 d4 df f4 0c 9b a1 e3 38 87 8c ce 47 41 c0 39 9a 72 80 eb 0c 35 22 e1 56 91 00 d5 6b 79 1a 27 | 8.......8...GA.9.r...5".V...ky.' |
05c0 | b5 6f c7 d7 7a 93 08 36 8e 1c a2 33 90 4e e4 e6 68 ee de f0 06 c0 18 96 de f5 cb cc ef df 24 f4 | .o..z..6...3.N..h.............$. |
05e0 | 6c 32 c6 c6 61 7e a6 8a 8e 43 c7 5c 24 34 c6 80 98 a1 22 8d aa ba e9 50 5e 3f 74 6d 2b aa 41 43 | l2..a~...C.\$4...."....P^?tm+.AC |
0600 | 10 a8 ca 35 45 be 93 b8 1d 63 43 9f 8b 84 d9 18 ac 45 7f a2 28 67 e5 7e 55 55 6e 32 00 37 00 82 | ...5E....cC......E..(g.~UUn2.7.. |
0620 | 88 0d 3e dc ea bd 5f f3 16 9b 21 ff f8 11 9f ab 43 5b 28 1b 82 13 09 24 4c cf 48 bc f1 69 18 e8 | ..>..._...!.....C[(....$L.H..i.. |
0640 | ba 05 00 a8 45 f0 a4 b1 07 df 9c 05 d8 9c f7 d8 ac ed e4 48 6e 34 0b 90 fe 2f 05 80 0b 37 4b 48 | ....E..............Hn4.../...7KH |
0660 | 77 e3 f3 00 fa 5e ba de 5d 75 de 0f 4c c0 93 6e 8e cd 61 a0 7c e0 23 83 90 4f 24 90 18 36 60 a6 | w....^..]u..L..n..a.|.#..O$..6`. |
0680 | 83 10 30 15 02 ae 6b 61 47 05 40 ff 04 ce 02 34 20 ba 29 8a 80 37 3c df 39 04 2f 2a e1 d2 a3 0d | ..0...kaG.@....4..)..7<.9./*.... |
06a0 | 03 fd a5 0e e7 51 86 81 0c db c3 69 16 e0 fa 42 a0 c2 cc e1 09 9c 05 78 f8 26 29 01 dc f8 06 c0 | .....Q.....i...B.......x.&)..... |
06c0 | fb a0 44 f4 d0 13 37 0c e4 1f 9c da 80 d7 d9 00 04 0d 00 f6 73 0e ff 58 79 00 9b d4 ef 93 1e e9 | ..D...7.............s..Xy....... |
06e0 | f9 0f de 2c 9f e5 4d 31 0b 00 a0 8d b9 df e7 7f 18 c8 58 e3 6e f6 59 80 57 bc e2 15 74 cb 2d b7 | ...,..M1..........X.n.Y.W...t.-. |
0700 | 60 b1 58 b0 31 46 43 08 e8 fb 5e df fa d6 b7 3e 21 6e 94 40 12 44 3e 2d 2a 5f f9 48 9e fc d1 88 | `.X.1FC...^....>!n.@.D>-*_.H.... |
0720 | 40 27 91 82 e2 fd 10 0d 0a 13 5d bd 59 ae dd cd 30 0e 0c e7 5c 2a f2 3c ba 47 78 24 0f 32 7c 58 | @'........].Y...0...\*.<.Gx$.2|X |
0740 | 1b c3 40 c6 5a 54 65 85 a2 ae 6e 6a 03 70 78 78 88 8b 17 2f 9a a3 a3 23 e3 9c b3 cc 8c b2 2c f1 | ..@.ZTe...nj.pxx.../...#......,. |
0760 | fd df ff fd 4f 88 65 34 c6 c0 1a db 13 68 ad ad 37 ae f2 8f 0d fb b8 d7 7f 52 f8 bf 32 f8 a3 8e | ....O.e4.....h..7........R..2... |
0780 | c2 14 01 dc 18 78 3c b3 00 7f 59 0a 90 f2 c5 9b 3e 01 f8 c0 07 3e a0 f7 de 7b af 30 b3 32 b3 d6 | .....x<...Y.....>....>...{.0.2.. |
07a0 | 75 ad 6f 7a d3 9b 9e b0 24 7a 73 16 e0 f3 3d 0e 2c 12 70 93 c8 01 dc 5c b3 00 bd 0f 6b 37 45 6e | u.oz....$zs...=.,.p....\....k7En |
07c0 | ff 4c b3 00 8f 1f ef 7f ff fb af 5b 27 e4 f3 35 0b 30 fe b7 e3 71 e0 d8 fa 9d 22 80 1b 02 69 16 | .L.........['..5.0...q...."...i. |
07e0 | 00 de 79 b8 d0 ac 17 93 46 ed be cd 9e f2 d8 33 4c b3 00 5f 8c 78 fc b3 00 27 45 03 3e 31 46 99 | ..y.....F......3L.._.x...'E.>1F. |
0800 | 27 03 70 63 dc 26 44 00 11 72 9d 6e f3 06 38 a9 38 94 0f fd 49 86 20 1b 8e 55 14 31 51 00 ae 37 | '.pc.&D..r.n..8.8...I....U.1Q..7 |
0820 | 8c 31 50 55 18 36 6b c6 77 dc 0e dc 0c f9 37 af ed b5 05 c0 d5 38 70 08 01 34 e9 01 dc 18 08 22 | .1PU.6k.w.....7......8p..4....." |
0840 | 04 a0 92 20 88 dc f1 93 0b 7f e3 aa ff 98 f5 97 07 80 06 fa ef 86 31 20 a2 12 50 33 1d cb eb 6b | ......................1...P3...k |
0860 | 03 00 94 d1 b8 e3 9a 83 bc 69 b8 b3 d1 c8 bf cf d7 f9 91 c6 81 55 a5 22 a2 69 1c f8 46 40 55 d7 | .........i...........U.".i..F@U. |
0880 | 0a 02 83 08 cb a6 1d a6 00 ab aa c2 62 b1 c0 ce ce 0e 54 15 6d db 62 3c 2f 00 00 d6 5a 94 65 d4 | ............b.....T.m.b</...Z.e. |
08a0 | af 2c cb 72 8d 6a 0a 00 2a 02 09 be 20 9a 98 80 d7 13 ae ed 04 a4 85 f7 0e 50 0c b5 98 be ef 87 | .,.r.j..*................P...... |
08c0 | 47 c6 66 9b 37 d3 7f 73 1a 97 ef 87 68 34 18 a7 4e 9d c6 7c 3e e7 28 20 f7 87 93 01 f8 52 47 d7 | G.f.7..s....h4..N..|>.(......RG. |
08e0 | 2e a1 8a c6 b9 c7 3f 0d 38 7e 6e bc 61 00 22 1c 47 15 e9 09 d7 0d 2c aa 8a 41 ea fd 91 76 3c 3c | ......?.8~n.a.".G.....,..A...v<< |
0900 | 5a 1d e0 a4 69 40 11 81 a8 42 54 9b 9b 24 00 b8 f1 0d 40 d3 b4 29 ec 93 6b 48 3e 8f 34 0d 38 de | Z...i@...BT..$....@..)..kH>.4.8. |
0920 | 26 33 0e 17 b3 01 18 b8 00 cc 20 30 30 51 81 3f 6b fc e0 0f fe 20 f5 7d 8f 37 bf f9 cd 9f b5 f1 | &3.........00Q.?k......}.7...... |
0940 | 74 41 40 a9 fe 32 9e 06 1c f7 fb 4f aa f3 8c 9f 37 36 f2 63 1d 01 95 64 18 6e 92 eb 70 c3 1b 80 | tA@..2.....O....76.c...d.n..p... |
0960 | void flush(const std::string &buffer);
private:
Logger &logger;
LogLevel level |
0a40 | 59 e4 da 59 f0 15 11 a8 28 8a e1 46 db 7c ee 5a e4 10 93 d0 e9 d4 8f f0 17 9f 79 58 3f fd 99 07 | Y..Y....(..F.|.Z..........yX?... |
0a60 | 1f f1 43 79 eb 5b df fa e1 e5 72 f9 71 ef fd 5d cc bc 53 14 45 f1 c3 3f fc c3 fc d9 18 00 63 0d | ..Cy.[....r.q..]..S.E..?......c. |
0a80 | d8 7c 76 4c c0 47 1b 06 ca 9d 9e d8 da f5 03 1f 60 32 00 5f e2 d8 db db c3 ee ee 2e b6 16 5b 6b | .|vL.G..........`2._..........[k |
0aa0 | b9 61 ce fd f2 63 ac 02 94 05 43 f3 02 c9 cd 85 a1 f9 f7 ce b9 58 75 ee fa e9 d4 7f 96 78 cb 5b | .a...c....C..........Xu......x.[ |
0ac0 | de f2 c1 c3 c3 c3 df 0b 21 ec 33 b3 b3 d6 3e 76 2b 9a aa af d9 55 9f e4 d1 1f c9 00 8c e7 fe 37 | ........!.3...>v+....U.........7 |
0ae0 | eb 06 c6 30 bc 77 68 db 16 7d bf 4e 1a 7b c3 ff fc 7a 7a cb 3f fe bb 37 5c 60 70 c3 a7 00 cc 1c | ...0.wh..}.N.{...zz.?..7\`p..... |
0b00 | 43 f4 13 c2 bc f1 9f 4f 22 02 8d fb fe 27 11 81 22 1b 30 4c a7 f9 73 c4 67 3e f3 99 87 bc f7 72 | C......O"....'..".0L..s.g>.....r |
0b20 | ee dc b9 21 da 7a 2c 78 22 89 40 6d db c2 7b 07 11 c5 1b fe ab 6f a4 8b 97 8e cb cb 87 ee b6 3f | ...!.z,x".@m..{......o.........? |
0b40 | ff d0 7d 2f a8 ea c5 dd 3f f8 b7 ff fa ff f0 8f fe e9 ff e9 26 03 f0 25 02 17 3c a0 91 0a ec bd | ..}/....?...........&..%..<..... |
0b60 | 83 6a 35 18 86 b1 e7 c8 de 7d 6c 38 00 0c 3c 80 9c 12 e4 7f 93 6b 07 c6 5a 40 a7 2a e0 e7 82 f7 | .j5......}l8..<......k..Z@.*.... |
0b80 | bc e7 3d 9f 93 f5 a4 08 9c 44 04 ca 7d fd 4d 09 b7 f1 24 60 be ce 12 97 8c 8e 86 80 86 28 81 5e | ..=......D..}.M...$`.........(.^ |
0ba0 | f8 f4 bd 6d 66 7e de d6 a2 7a c9 c1 d2 dd bb 3c 3e 7a b6 8a 6e 85 e0 fe 37 00 7f 3a 19 80 2f 99 | ...mf~...z.....<>z..n...7..:../. |
0bc0 | 22 a0 53 cb 24 de 3b 38 17 d6 0e ff 58 3f 2e af 84 1a 57 95 f3 1e f9 3c de 7a cd 98 a9 31 b0 45 | ".S.$.;8....X?....W....<.z...1.E |
0be0 | 21 20 9e c2 80 eb 08 22 13 a0 31 0c db 8c 00 72 fd 26 6b 39 8e a3 86 71 81 30 a7 71 63 e3 20 22 | !......"..1....r.&k9...q.0.qc.." |
0c00 | 60 22 9c d9 aa be ec f6 33 f5 5b 44 e4 b9 06 e1 76 84 65 79 f5 e2 11 b5 8b 1d 94 65 fd 63 00 5e | `"......3.[D....v.ey.......e.c.^ |
0c20 | 3e 19 80 2f 20 fe fe eb bf 97 42 70 c5 95 4b 0f e3 a1 87 1e c0 83 17 1f 8e fb dc 4a 83 aa aa a1 | >../......Bp..K............J.... |
0c40 | ca a8 eb 1a f3 79 a9 97 8e 89 1a a7 a2 4a 00 9d 5c 08 1a cf 92 6f e6 8d 8f b4 4e 4a 55 63 5a 11 | .....y.......J..\....o....NJUcZ. |
0c60 | 82 1a c3 f8 96 17 7c 65 d1 0b 48 95 40 86 21 e2 e0 7c 03 0a 01 3b 7b bb d8 dd dd 03 01 f0 21 c0 | ......|e..H.@.!..|...;{.......!. |
0c80 | b9 00 91 80 b6 77 08 6a 31 9b 55 28 0a 8b c2 c4 0b 32 af 0b 30 11 7c f0 68 fb 1e a2 29 d2 20 82 | .....w.j1.U(.....2..0.|.h...)... |
0ca0 | 0a 62 fb 91 2c 9c eb e1 ba 0e 4e 02 aa aa 46 59 57 30 44 60 36 b0 6c 60 2c a0 ea c1 20 90 b1 00 | .b..,.....N...FYW0D`6.l`,....... |
0cc0 | 09 7a 2f f0 a2 10 21 40 15 04 85 40 c1 c4 20 12 04 89 d5 75 ef 7c 62 d4 c5 7c db 0b 70 70 f5 08 | .z/...!@...@.......u.|b..|..pp.. |
0ce0 | 3e 08 e6 b3 0a bb 5b 25 bc 3b 66 ab 01 a7 77 b7 c3 a9 53 7b e1 30 88 5e fd e4 15 08 2f 59 24 58 | >.....[%.;f...w...S{.0.^..../Y$X |
0d00
class AndroidSystemLogOutput : public ICombinedLogOutput {
public:
AndroidSystemLogOutput()
{
g_logger.addOutput(this);
}
~AndroidSystemLogOutput()
{
g_logger.removeOutput(this);
}
void logRaw(LogLevel lev, const std::string &line)
{
STATIC_ASSERT(ARRLEN(g_level_to_android) == LL_MAX,
mismatch_between_android_and_internal_loglevels);
__android_log_print(g_level_to_android[lev],
PROJECT_NAME_C, "%s", line.c_str());
}
};
AndroidSystemLogOutput g_android_log_output;
#endif
///////////////////////////////////////////////////////////////////////////////
////
//// Logger
////
LogLevel Logger::stringToLevel(const std::string &name)
{
if (name == "none")
return LL_NONE;
else if (name == "error")
return LL_ERROR;
else if (name == "warning")
return LL_WARNING;
else if (name == "action")
return LL_ACTION;
else if (name == "info")
return LL_INFO;
else if (name == "verbose")
return LL_VERBOSE;
else
return LL_MAX;
}
void Logger::addOutput(ILogOutput *out)
{
addOutputMaxLevel(out, (LogLevel)(LL_MAX - 1));
}
void Logger::addOutput(ILogOutput *out, LogLevel lev)
{
m_outputs[lev].push_back(out);
}
void Logger::addOutputMasked(ILogOutput *out, LogLevelMask mask)
{
for (size_t i = 0; i < LL_MAX; i++) {
if (mask & LOGLEVEL_TO_MASKLEVEL(i))
m_outputs[i].push_back(out);
}
}
void Logger::addOutputMaxLevel(ILogOutput *out, LogLevel lev)
{
assert(lev < LL_MAX);
for (size_t i = 0; i <= lev; i++)
m_outputs[i].push_back(out);
}
LogLevelMask Logger::removeOutput(ILogOutput *out)
{
LogLevelMask ret_mask = 0;
for (size_t i = 0; i < LL_MAX; i++) {
std::vector<ILogOutput *>::iterator it;
it = std::find(m_outputs[i].begin(), m_outputs[i].end(), out);
if (it != m_outputs[i].end()) {
ret_mask |= LOGLEVEL_TO_MASKLEVEL(i);
m_outputs[i].erase(it);
}
}
return ret_mask;
}
void Logger::setLevelSilenced(LogLevel lev, bool silenced)
{
m_silenced_levels[lev] = silenced;
}
void Logger::registerThread(const std::string &name)
{
threadid_t id = thr_get_current_thread_id();
MutexAutoLock lock(m_mutex);
m_thread_names[id] = name;
}
void Logger::deregisterThread()
{
threadid_t id = thr_get_current_thread_id();
MutexAutoLock lock(m_mutex);
m_thread_names.erase(id);
}
const std::string Logger::getLevelLabel(LogLevel lev)
{
static const std::string names[] = {
"",
"ERROR",
"WARNING",
"ACTION",
"INFO",
"VERBOSE",
};
assert(lev < LL_MAX && lev >= 0);
STATIC_ASSERT(ARRLEN(names) == LL_MAX,
mismatch_between_loglevel_names_and_enum);
return names[lev];
}
const std::string Logger::getThreadName()
{
std::map<threadid_t, std::string>::const_iterator it;
threadid_t id = thr_get_current_thread_id();
it = m_thread_names.find(id);
if (it != m_thread_names.end())
return it->second;
std::ostringstream os;
os << "#0x" << std::hex << id;
return os.str();
}
void Logger::log(LogLevel lev, const std::string &text)
{
if (m_silenced_levels[lev])
return;
const std::string thread_name = getThreadName();
const std::string label = getLevelLabel(lev);
const std::string timestamp = getTimestamp();
std::ostringstream os(std::ios_base::binary);
os << timestamp << ": " << label << "[" << thread_name << "]: " << text;
logToOutputs(lev, os.str(), timestamp, thread_name, text);
}
void Logger::logRaw(LogLevel lev, const std::string &text)
{
if (m_silenced_levels[lev])
return;
logToOutputsRaw(lev, text);
}
void Logger::logToOutputsRaw(LogLevel lev, const std::string &line)
{
MutexAutoLock lock(m_mutex);
for (size_t i = 0; i != m_outputs[lev].size(); i++)
m_outputs[lev][i]->logRaw(lev, line);
}
void Logger::logToOutputs(LogLevel lev, const std::string &combined,
const std::string &time, const std::string &thread_name,
const std::string &payload_text)
{
MutexAutoLock lock(m_mutex);
for (size_t i = 0; i != m_outputs[lev].size(); i++)
m_outputs[lev][i]->log(lev, combined, time, thread_name, payload_text);
}
////
//// *LogOutput methods
////
void FileLogOutput::open(const std::string &filename)
{
m_stream.open(filename.c_str(), std::ios::app | std::ios::ate);
if (!m_stream.good())
throw FileNotGoodException("Failed to open log file " +
filename + ": " + strerror(errno));
m_stream << "\n\n"
"-------------" << std::endl
<< " Separator" << std::endl
<< "-------------\n" << std::endl;
}
////
//// *Buffer methods
////
int StringBuffer::overflow(int c)
{
push_back(c);
return c;
}
std::streamsize StringBuffer::xsputn(const char *s, std::streamsize n)
{
for (int i = 0; i < n; ++i)
push_back(s[i]);
return n;
}
void StringBuffer::push_back(char c)
{
if (c == '\n' || c == '\r') {
if (!buffer.empty())
flush(buffer);
buffer.clear();
} else {
buffer.push_back(c);
}
}
void LogBuffer::flush(const std::string &buffer)
{
logger.log(level, buffer);
}
void RawLogBuffer::flush(const std::string &buffer)
{
g_logger.logRaw(LL_NONE, buffer);
}
|