Вызов free()
указателя, не возвращенного функциями выделения памяти (malloc
, calloc
и т. д.) вызывает неопределенное поведение. У вашего кода есть неопределенное поведение, поэтому компилятору не нужно давать вам какую-либо диагностику, и он может показать любое поведение, может работать или сбой или буквально что-либо делать.
Просто избегайте писать код, который вызывает Undefined Behavior, это единственное решение.
Вы можете использовать logging.Filter
класс. Когда вы объявляете свой логгер, сделайте что-то вроде этого:
import logging
logging.basicConfig(filename='myapp.log', level=logging.INFO)
class Global:
SourceIPAddress = ''
class IpFilter(logging.Filter):
def filter(self, rec):#the rec is part of the function signature.
return not Global.SourceIPAddress == '127.0.0.1'
def main():
log = logging.getLogger('myLogger')
log.addFilter(IpFilter())
log.info("log")
Global.SourceIPAddress = '127.0.0.1'
log.info("Don't log")
if __name__ == '__main__':
main()
Конечно, я реализовал это очень простым способом, и вы должны сохранить IP в лучшем месте (:
Я бы также проверьте эти ссылки для дополнительной информации:
https://docs.python.org/3/howto/logging-cookbook.html https: //www.programcreek. ком / Python / пример / 3364 / logging.Filter