SlideShare una empresa de Scribd logo
1 de 86
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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 a 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 a 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
 

Último

WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 

Último (20)

WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

20151024 Taichung.py 講一些 Python Logging