-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Closed
Labels
C: loggingInformation LoggingInformation Loggingauto-lockedOutdated issues that have been locked by automationOutdated issues that have been locked by automationstate: awaiting PRFeature discussed, PR is neededFeature discussed, PR is neededtype: enhancementImprovements to functionalityImprovements to functionality
Description
What's the problem this feature will solve?
Currently (pip 19.1.1) when running pip install --log example.log ..., the log messages traced into example.log have timestamps that includes up to the second. For example:
2019-06-09T22:29:08 Created temporary directory: /tmp/user/1000/pip-install-a6hvpvbz
2019-06-09T22:29:08 Requirement already satisfied: requests in ./.venv/lib/python3.7/site-packages (2.22.0)
2019-06-09T22:29:08 Requirement already satisfied: certifi>=2017.4.17 in ./.venv/lib/python3.7/site-packages (from requests) (2019.3.9)
As a result:
- log records cannot be easily correlated with logs from tools like strace, ltrace, and sysdig since these tools may output several thousand events in a given second
- delays less than 2 seconds long are harder to identify from the logs alone - this is relevant when running
pipmany times as part of integration tests for e.g. build backends or dev tools
Describe the solution you'd like
It would be great if pip could include milliseconds in the log timestamps.
Alternative Solutions
Create a ./sitecustomize.py containing
import time
from pip._internal.utils.logging import IndentingFormatter
def formatTime(self, record, _format=None):
return time.strftime(
f'%Y-%m-%dT%H:%M:%S,{record.msecs:03.0f} ', self.converter(record.created)
)
IndentingFormatter.formatTime = formatTimethen execute pip like PYTHONPATH=$PWD pip install --log example.log ..., which results in
2019-06-10T02:36:11,474 Created temporary directory: /tmp/user/1000/pip-install-oc0qwb1k
2019-06-10T02:36:11,476 Requirement already satisfied: requests in ./.venv/lib/python3.7/site-packages (2.22.0)
2019-06-10T02:36:11,486 Requirement already satisfied: chardet<3.1.0,>=3.0.2 in ./.venv/lib/python3.7/site-packages (from requests) (3.0.4)
This isn't really a good approach since it uses pip implementation details.
The actual implementation could be to define default_time_format = '%Y-%m-%dT%H:%M:%S' and default_msec_format = '%s,%03d ' on IndentingFormatter.
Additional context
N/A
Metadata
Metadata
Assignees
Labels
C: loggingInformation LoggingInformation Loggingauto-lockedOutdated issues that have been locked by automationOutdated issues that have been locked by automationstate: awaiting PRFeature discussed, PR is neededFeature discussed, PR is neededtype: enhancementImprovements to functionalityImprovements to functionality