SlideShare a Scribd company logo
1 of 86
Download to read offline
Python Logging
Me?
• 

== Chen Chun-Chia

== CCC
• MitraCloud 

>>> Python/Django

>>> Android
2
• logger, handler
• level, filter, formatter
• config
• logging flow
Python 3.4
4
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
5
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
Log level
6
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
Log message
7
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
Log level
8
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
Log message
9
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
... logger
10
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
IN
OUT
11
Logging
12
Logger Handler
13
Logger Handler
level
filter
level
filter
formatter
14
Handler
Logger Handler
level
filter
level
filter
formatter
config
Logger
15
level
16
>>> import logging
>>> logging.warning('haha')
WARNING:root:haha
Log level
17
level
level
———————
CRITICAL
ERROR
WARNING
INFO
DEBUG
50
40
30
20
10
18
level
logging.basicConfig(level=logging.ERROR)
logging.critical('critical')
logging.error('error')
logging.warning('warning')
logging.info('info')
logging.debug('debug')
CRITICAL:root:critical
ERROR:root:error
level
———————
CRITICAL
ERROR
WARNING
INFO
DEBUG
19
level
logging.basicConfig(level=logging.INFO)
logging.critical('critical')
logging.error('error')
logging.warning('warning')
logging.info('info')
logging.debug('debug')
CRITICAL:root:critical
ERROR:root:error
WARNING:root:warning
INFO:root:info
level
———————
CRITICAL
ERROR
WARNING
INFO
DEBUG
20
level
level
———————
CRITICAL
ERROR
WARNING
INFO
DEBUG
level WARNING
21
Logger Handler
Logger Handlerfilter filter
formatter
config
level level
22
Logger
23
getLogger Logger
import logging
logging.basicConfig()
logger = logging.getLogger('mylogger')
logger.error('haha')
ERROR:mylogger:haha
24
Logger
root
app1 app2
app1.a app1.b app2.c
25
Logger
root
app1 app2
app1.a app1.b app2.c
import logging
logging.basicConfig()
a = logging.getLogger('app1.a')
a.error('haha')
ERROR:app1.a:haha
26
Logger
root
app1 app2
app1.a app1.b app2.c
27
Handler
Logger Handler
Logger filter filter
formatter
config
level level
28
log
format
29
format
import logging
logging.basicConfig(format='*** %(message)s ***’)
logging.error('haha')
*** haha ***
30
format
1
2
3
4
5
6
7
import logging



logging.basicConfig(

format='%(filename)s:%(lineno)s %(message)s’
)

logging.error('haha')
a.py:7 haha
a.py
31
format
import logging
logging.basicConfig(format='*** %(message)s ***')
logging.error('haha')
*** haha ***
32
format
import logging
logging.basicConfig(format='*** %(message)s ***')
logging.error('haha')
*** haha ***
33
format
import logging
logging.basicConfig(format='*** %(message)s ***')
logging.error('haha')
*** haha ***https://docs.python.org/3.5/library/logging.html#logrecord-attributes
34
Handler
Logger Handler
Logger filter filter
formatter
config
level level
35
log
36
handler
import logging



a = logging.getLogger('mylogger')



handler = logging.FileHandler('a.log')

a.addHandler(handler)



a.error('hahaha')
hahaha
a.log
37
handler
import logging



a = logging.getLogger('mylogger')



h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')

a.addHandler(h1)

a.addHandler(h2)



a.error('hahaha')
hahaha
1.log
hahaha
2.log
38
handler
StreamHandler DatagramHandler
FileHandler SysLogHandler
NullHandler NTEventLogHandler
WatchedFileHandler SMTPHandler
BaseRotatingHandler MemoryHandler
RotatingFileHandler HTTPHandler
TimedRotatingFileHandler QueueHandler
SocketHandler
https://docs.python.org/3.5/library/logging.handlers.html
39
Handler
Handler
Logger filter filter
formatter
config
level level
Logger
40
handler
format
41
format
a = logging.getLogger('mylogger')



h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')

h1.setFormatter(
logging.Formatter('*** %(message)s ***'))

h2.setFormatter(
logging.Formatter('%(levelname)s:%(message)s'))

a.addHandler(h1)

a.addHandler(h2)



a.error('haha')
*** haha ***1.log
ERROR:haha2.log
42
Handler
Logger Handler
Logger filter filter
formatter
config
level level
43
level
handler
44
level
a = logging.getLogger('mylogger')



h1 = logging.FileHandler('1.log')
h2 = logging.FileHandler('2.log')

h1.setLevel(logging.ERROR)

h2.setLevel(logging.WARNING)



a.addHandler(h1)

a.addHandler(h2)



a.error('error')

a.warning('warning')
error1.log
error
warning
2.log
45
Handler
Logger Handler
Logger filter filter
formatter
config
level level
46
Handler
Logger Handler
Logger filter filter
formatter
config
level level
Logger Handler level
log
47
Filter log
48
Filter
class IpFilter(logging.Filter):

def filter(self, record):

record.ip = '192.168.1.2'

return True



logging.basicConfig(format='[%(ip)s] %(message)s')

a = logging.getLogger('mylogger')



f = IpFilter()

a.addFilter(f)



a.error('hahaha')
49
record: LogRecord
log
log LogRecord
Filter
class IpFilter(logging.Filter):

def filter(self, record):

record.ip = '192.168.1.2'

return True



logging.basicConfig(format='[%(ip)s] %(message)s')

a = logging.getLogger('mylogger')



f = IpFilter()

a.addFilter(f)



a.error('hahaha')
50
Filter
class IpFilter(logging.Filter):

def filter(self, record):

record.ip = '192.168.1.2'

return True



logging.basicConfig(format='[%(ip)s] %(message)s')

a = logging.getLogger('mylogger')



f = IpFilter()

a.addFilter(f)



a.error('hahaha')
[192.168.1.2] hahaha
51
Handler
Logger Handler
Logger
formatter
config
level level
filter filter
52
handler
...
53
handler
54
Handler emit
class MyHandler(logging.Handler):


def __init__(self, widget):

super(MyHandler, self).__init__()

self._widget = widget



def emit(self, record):

msg = self.format(record)


cursor = self._widget.textCursor()

cursor.insertText(msg)

cursor.insertText('n')
55
QPlainTextEdit
class MyHandler(logging.Handler):


def __init__(self, widget):

super(MyHandler, self).__init__()

self._widget = widget



def emit(self, record):

msg = self.format(record)


cursor = self._widget.textCursor()

cursor.insertText(msg)

cursor.insertText('n')
PyQt
56
57
app = QApplication(sys.argv)

a = logging.getLogger('a')



widget = QPlainTextEdit()

h = MyHandler(widget)

a.addHandler(h)

widget.show()



a.error('hihi')

a.warning('lol')



sys.exit(app.exec_())
Handler
Logger Handler
Logger
formatter
config
level level
filter filter
58
logging
...
59
dict
60
...
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
61
Dict Logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
config = {

'version': 1,

'formatters': {

'my_formatter': {

'format': '*** %(name)s:%(message)s ***'

},

},

'handlers': {

'my_handler': {

'level': 'DEBUG',

'class': 'logging.FileHandler',

'filename': 'a.log',

'formatter': 'my_formatter',

}

},

'loggers': {

'my_logger': {

'level': 'INFO',

'handlers': ['my_handler'],

}

},

}
62
Dict Logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
config = {

'version': 1,

'formatters': {

'my_formatter': {

'format': '*** %(name)s:%(message)s ***'

},

},

'handlers': {

'my_handler': {

'level': 'DEBUG',

'class': 'logging.FileHandler',

'filename': 'a.log',

'formatter': 'my_formatter',

}

},

'loggers': {

'my_logger': {

'level': 'INFO',

'handlers': ['my_handler'],

}

},

}
from logging.config import dictConfig

dictConfig(config)
63
...
from logging.config import dictConfig

dictConfig(config)


a = logging.getLogger('my_logger')



a.error('error')

a.info('info')
64
65
...
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
66
logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
[formatters]

keys=my_formatter



[handlers]

keys=my_handler



[loggers]

keys=root,my_logger
[formatter_my_formatter]

format=*** %(name)s:%(message)s ***



[handler_my_handler]

level=DEBUG

class=FileHandler

formatter=my_formatter

args=('a.log',)



[logger_my_logger]

level=INFO

handlers=my_handler

qualname=my_logger



[logger_root]

handlers=
my_logging.cfg
67
logging
f = logging.Formatter(‘*** %(name)s:%(message)s ***’)



my_handler = logging.FileHandler('a.log')

my_handler.setLevel(logging.DEBUG)

my_handler.setFormatter(f)



a = logging.getLogger('my_logger')

a.setLevel(logging.INFO)

a.addHandler(my_handler)



a.error('error')

a.info('info')
[formatters]

keys=my_formatter



[handlers]

keys=my_handler



[loggers]

keys=root,my_logger
[formatter_my_formatter]

format=*** %(name)s:%(message)s ***



[handler_my_handler]

level=DEBUG

class=FileHandler

formatter=my_formatter

args=('a.log',)



[logger_my_logger]

level=INFO

handlers=my_handler

qualname=my_logger



[logger_root]

handlers=
my_logging.cfg
from logging.config import fileConfig

fileConfig('my_logging.cfg')
68
...
from logging.config import fileConfig

fileConfig('my_logging.cfg')


a = logging.getLogger('my_logger')



a.error('error')

a.info('info')
69
70
%(xxx)s
defaults
71
[formatters]

keys=my_formatter



[handlers]

keys=my_handler



[loggers]

keys=root,my_logger
[formatter_my_formatter]

format=*** %(name)s:%(message)s ***



[handler_my_handler]

level=DEBUG

class=FileHandler

formatter=my_formatter

args=('a.log',)



[logger_my_logger]

level=INFO

handlers=my_handler

qualname=my_logger



[logger_root]

handlers=
72
[formatters]

keys=my_formatter



[handlers]

keys=my_handler



[loggers]

keys=root,my_logger
[formatter_my_formatter]

format=*** %(name)s:%(message)s ***



[handler_my_handler]

level=DEBUG

class=FileHandler

formatter=my_formatter

args=('%(my_log_file)s',)



[logger_my_logger]

level=INFO

handlers=my_handler

qualname=my_logger



[logger_root]

handlers=
%(xxx)s
73
[formatters]

keys=my_formatter



[handlers]

keys=my_handler



[loggers]

keys=root,my_logger
[formatter_my_formatter]

format=*** %(name)s:%(message)s ***



[handler_my_handler]

level=DEBUG

class=FileHandler

formatter=my_formatter

args=('%(my_log_file)s',)



[logger_my_logger]

level=INFO

handlers=my_handler

qualname=my_logger



[logger_root]

handlers=
fileConfig(
'my_logging.cfg',
defaults={'my_log_file': 'a.log'}
)
defaults
74
...
75
basicConfig
76
basicConfig
StreamHandler + default Formatter
root logger
level, format, filename, …
77
basicConfig
logging.basicConfig(level=logging.ERROR)
level
logging.basicConfig(format='*** %(message)s ***')
format
logging.basicConfig(filename='a.log')
filename
78
basicConfig
logging.basicConfig(
level=logging.ERROR,
format='*** %(message)s ***',
filename='a.log'
)
level format filename
79
Handler
Logger Handler
level
filter
level
filter
formatter
config
Logger
80
logging
log
81
LogRecord
logger.info('xxx') logger
level
logger filter
record
YES
YES
NO
NO
bye
bye
handler
YES
bye bye
NO
parent logger
YES
NO logger
propagate
parent logger
82
YES
handler
YES logger
propagate
YES
NO
bye
YES
NO
bye
handler
level
handler filter
record
83
https://docs.python.org/3.5/howto/logging.html#logging-flow
84
Basic Tutorial & Advanced Tutorial
https://docs.python.org/3.5/howto/logging.html
Logging Cookbook
https://docs.python.org/3.5/howto/logging-cookbook.html
Python Library Document
https://docs.python.org/3.5/library/logging.html
85
Thank You

More Related Content

What's hot

Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logsJeremy Cook
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlHideaki Ohno
 
Ida python intro
Ida python introIda python intro
Ida python intro小静 安
 
BSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationBSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationWorkhorse Computing
 
How Functions Work
How Functions WorkHow Functions Work
How Functions WorkSaumil Shah
 
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
Exploit Research and Development Megaprimer: Unicode Based Exploit DevelopmentExploit Research and Development Megaprimer: Unicode Based Exploit Development
Exploit Research and Development Megaprimer: Unicode Based Exploit DevelopmentAjin Abraham
 
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...Puppet
 
Voxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistVoxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistAnton Arhipov
 
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]RootedCON
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Pythongturnquist
 
Exploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Exploit Research and Development Megaprimer: DEP Bypassing with ROP ChainsExploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Exploit Research and Development Megaprimer: DEP Bypassing with ROP ChainsAjin Abraham
 
The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.Workhorse Computing
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistAnton Arhipov
 
Monit - NHRuby May 2009
Monit - NHRuby May 2009Monit - NHRuby May 2009
Monit - NHRuby May 2009bturnbull
 
Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.CocoaHeads France
 

What's hot (20)

Turbo charge your logs
Turbo charge your logsTurbo charge your logs
Turbo charge your logs
 
Yapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed PerlYapcasia2011 - Hello Embed Perl
Yapcasia2011 - Hello Embed Perl
 
Ida python intro
Ida python introIda python intro
Ida python intro
 
BSDM with BASH: Command Interpolation
BSDM with BASH: Command InterpolationBSDM with BASH: Command Interpolation
BSDM with BASH: Command Interpolation
 
How Functions Work
How Functions WorkHow Functions Work
How Functions Work
 
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
Exploit Research and Development Megaprimer: Unicode Based Exploit DevelopmentExploit Research and Development Megaprimer: Unicode Based Exploit Development
Exploit Research and Development Megaprimer: Unicode Based Exploit Development
 
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...
PuppetConf 2017: Use Puppet to Tame the Dockerfile Monster- Bryan Belanger, A...
 
Voxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with JavassistVoxxed Days Vilnius 2015 - Having fun with Javassist
Voxxed Days Vilnius 2015 - Having fun with Javassist
 
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]
Sergi Álvarez & Roi Martín - Radare2 Preview [RootedCON 2010]
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
Exploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Exploit Research and Development Megaprimer: DEP Bypassing with ROP ChainsExploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
Exploit Research and Development Megaprimer: DEP Bypassing with ROP Chains
 
The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.The $path to knowledge: What little it take to unit-test Perl.
The $path to knowledge: What little it take to unit-test Perl.
 
Get your teeth into Plack
Get your teeth into PlackGet your teeth into Plack
Get your teeth into Plack
 
Con-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With JavassistCon-FESS 2015 - Having Fun With Javassist
Con-FESS 2015 - Having Fun With Javassist
 
node ffi
node ffinode ffi
node ffi
 
Monit - NHRuby May 2009
Monit - NHRuby May 2009Monit - NHRuby May 2009
Monit - NHRuby May 2009
 
Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.
 
Php Debugger
Php DebuggerPhp Debugger
Php Debugger
 
Metadata-driven Testing
Metadata-driven TestingMetadata-driven Testing
Metadata-driven Testing
 
Getting Testy With Perl6
Getting Testy With Perl6Getting Testy With Perl6
Getting Testy With Perl6
 

Similar to 20151024 Taichung.py 講一些 Python Logging

Java Logging discussion Log4j,Slf4j
Java Logging discussion Log4j,Slf4jJava Logging discussion Log4j,Slf4j
Java Logging discussion Log4j,Slf4jRajiv Gupta
 
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)James Titcumb
 
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)James Titcumb
 
Log4j Logging Mechanism
Log4j Logging MechanismLog4j Logging Mechanism
Log4j Logging MechanismKunal Dabir
 
Take My Logs. Please!
Take My Logs. Please!Take My Logs. Please!
Take My Logs. Please!Mike Brittain
 
I have written the code below import os import sys import html import.docx
I have written the code below  import os import sys import html import.docxI have written the code below  import os import sys import html import.docx
I have written the code below import os import sys import html import.docxhendriciraida
 
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱Mohammad Reza Kamalifard
 
Play Framework Logging
Play Framework LoggingPlay Framework Logging
Play Framework Loggingmitesh_sharma
 
Getting modern with logging via log4perl
Getting modern with logging via log4perlGetting modern with logging via log4perl
Getting modern with logging via log4perlDean Hamstead
 
Logging with Logback in Scala
Logging with Logback in ScalaLogging with Logback in Scala
Logging with Logback in ScalaKnoldus Inc.
 
An introduction to PHP 5.4
An introduction to PHP 5.4An introduction to PHP 5.4
An introduction to PHP 5.4Giovanni Derks
 

Similar to 20151024 Taichung.py 講一些 Python Logging (20)

Log4j in 8 slides
Log4j in 8 slidesLog4j in 8 slides
Log4j in 8 slides
 
Log4jprop example
Log4jprop exampleLog4jprop example
Log4jprop example
 
Java Logging discussion Log4j,Slf4j
Java Logging discussion Log4j,Slf4jJava Logging discussion Log4j,Slf4j
Java Logging discussion Log4j,Slf4j
 
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
 
Log4jxml ex
Log4jxml exLog4jxml ex
Log4jxml ex
 
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
 
World of Logging
World of LoggingWorld of Logging
World of Logging
 
Log4j Logging Mechanism
Log4j Logging MechanismLog4j Logging Mechanism
Log4j Logging Mechanism
 
Logging
LoggingLogging
Logging
 
Functional python
Functional pythonFunctional python
Functional python
 
Take My Logs. Please!
Take My Logs. Please!Take My Logs. Please!
Take My Logs. Please!
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
I have written the code below import os import sys import html import.docx
I have written the code below  import os import sys import html import.docxI have written the code below  import os import sys import html import.docx
I have written the code below import os import sys import html import.docx
 
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۱
 
Play Framework Logging
Play Framework LoggingPlay Framework Logging
Play Framework Logging
 
Getting modern with logging via log4perl
Getting modern with logging via log4perlGetting modern with logging via log4perl
Getting modern with logging via log4perl
 
Logging with Logback in Scala
Logging with Logback in ScalaLogging with Logback in Scala
Logging with Logback in Scala
 
Log4j2
Log4j2Log4j2
Log4j2
 
Hacking with hhvm
Hacking with hhvmHacking with hhvm
Hacking with hhvm
 
An introduction to PHP 5.4
An introduction to PHP 5.4An introduction to PHP 5.4
An introduction to PHP 5.4
 

Recently uploaded

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 

Recently uploaded (20)

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 

20151024 Taichung.py 講一些 Python Logging