Skip to content

Commit 45fcb11

Browse files
authored
[EventHub] update Timed to RotatingFileHandler (Azure#39180)
* [EventHub] update timed rotating logger to rotating logger * update stress w/ git branch comments sb * sb update directions
1 parent 8c480ce commit 45fcb11

File tree

10 files changed

+62
-30
lines changed

10 files changed

+62
-30
lines changed

sdk/eventhub/azure-eventhub/stress/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FROM mcr.microsoft.com/cbl-mariner/base/python:3
22

3+
# To install a package from a git branch, add the line below to the end of the following installs:
4+
# && yum install -y git
35
RUN yum update -y && yum install -y ca-certificates
46

57
WORKDIR /app

sdk/eventhub/azure-eventhub/stress/scripts/azure_eventhub_consumer_stress_async.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,12 @@ def parse_starting_position(args):
116116
type=str,
117117
default="Error",
118118
)
119+
# rotate logs by default, if you want to disable it, use --no-rotating-logs flag
120+
parser.add_argument("--no-rotating-logs", action="store_true")
119121

120122

121123
args = parser.parse_args()
124+
rotating_logs = not args.no_rotating_logs
122125
starting_position = parse_starting_position(args)
123126
print_console = args.print_console or (os.environ.get("PRINT_CONSOLE") == "1")
124127
debug_level = getattr(logging, args.debug_level.upper(), logging.ERROR)
@@ -131,7 +134,7 @@ def parse_starting_position(args):
131134
log_filename += ".log"
132135
logdir = os.environ.get("DEBUG_SHARE")
133136
logfilepath = f"{logdir}/{log_filename}"
134-
LOGGER = get_logger(logfilepath, "stress_receive_async", level=debug_level, print_console=args.print_console)
137+
LOGGER = get_logger(logfilepath, "stress_receive_async", level=debug_level, print_console=args.print_console, rotating_logs=rotating_logs)
135138
LOG_PER_COUNT = args.output_interval
136139

137140
start_time = time.perf_counter()

sdk/eventhub/azure-eventhub/stress/scripts/azure_eventhub_consumer_stress_sync.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,13 @@ def parse_starting_position(args):
112112
type=str,
113113
default="Error",
114114
)
115+
# rotate logs by default, if you want to disable it, use --no-rotating-logs flag
116+
parser.add_argument("--no-rotating-logs", action="store_true")
115117

116118

117119
args = parser.parse_args()
120+
121+
rotating_logs = not args.no_rotating_logs
118122
starting_position = parse_starting_position(args)
119123
print_console = args.print_console or (os.environ.get("PRINT_CONSOLE") == "1")
120124
debug_level = getattr(logging, args.debug_level.upper(), logging.ERROR)
@@ -127,7 +131,7 @@ def parse_starting_position(args):
127131
log_filename += ".log"
128132
logdir = os.environ.get("DEBUG_SHARE")
129133
logfilepath = f"{logdir}/{log_filename}"
130-
LOGGER = get_logger(logfilepath, "stress_receive_sync", level=debug_level, print_console=print_console)
134+
LOGGER = get_logger(logfilepath, "stress_receive_sync", level=debug_level, print_console=print_console, rotating_logs=rotating_logs)
131135
LOG_PER_COUNT = args.output_interval
132136

133137
start_time = time.perf_counter()

sdk/eventhub/azure-eventhub/stress/scripts/azure_eventhub_producer_stress.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,12 @@ def __init__(self, argument_parser):
179179
type=str,
180180
default="Error",
181181
)
182+
# rotate logs by default, if you want to disable it, use --no-rotating-logs flag
183+
parser.add_argument("--no-rotating-logs", action="store_true")
182184
self.args, _ = parser.parse_known_args()
183185

186+
# store rotating_logs in args for later use
187+
self.rotating_logs = not self.args.no_rotating_logs
184188
if self.args.send_partition_key and self.args.send_partition_id:
185189
raise ValueError("Cannot set send_partition_key and send_partition_id at the same time.")
186190

@@ -298,6 +302,7 @@ def get_partition_ids(self_inner):
298302
method_name,
299303
level=self.debug_level,
300304
print_console=self.args.print_console,
305+
rotating_logs=self.rotating_logs,
301306
)
302307
test_method = globals()[method_name]
303308
self.running = True
@@ -401,7 +406,7 @@ async def get_partition_ids(self_inner):
401406
logdir = os.environ.get("DEBUG_SHARE")
402407
logfilepath = f"{logdir}/{log_filename}"
403408

404-
logger = get_logger(logfilepath, method_name, level=self.debug_level, print_console=self.args.print_console)
409+
logger = get_logger(logfilepath, method_name, level=self.debug_level, print_console=self.args.print_console, rotating_logs=self.rotating_logs)
405410
test_method = globals()[method_name]
406411
self.running = True
407412

sdk/eventhub/azure-eventhub/stress/scripts/dev_requirement.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
psutil
2+
# To install from a specific git branch, replace the package with a req in the following format:
3+
# git+<gh-repo-url>@<branch>#subdirectory=<path/to/sdk>&egg=<package-name>
4+
# ex. git+https://github.com/kashifkhan/azure-sdk-for-python.git@fix_ws_none_error#subdirectory=sdk/eventhub/azure-eventhub&egg=azure-eventhub
25
azure-eventhub
36
azure-eventhub-checkpointstoreblob
47
azure-eventhub-checkpointstoreblob-aio
5-
azure-servicebus
68
azure-storage-blob
79
azure-identity
810
opencensus-ext-azure

sdk/eventhub/azure-eventhub/stress/scripts/logger.py

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import os
77
import sys
88
import logging
9-
from logging.handlers import TimedRotatingFileHandler
9+
from logging.handlers import RotatingFileHandler
1010

1111
from opencensus.ext.azure.log_exporter import AzureLogHandler
1212

1313

14-
def get_base_logger(log_filename, logger_name, level=logging.ERROR, print_console=False, log_format=None):
14+
def get_base_logger(log_filename, logger_name, level=logging.ERROR, print_console=False, log_format=None, rotating_logs=True):
1515
logger = logging.getLogger(logger_name)
1616
logger.setLevel(level)
1717
formatter = log_format or logging.Formatter(
@@ -24,13 +24,17 @@ def get_base_logger(log_filename, logger_name, level=logging.ERROR, print_consol
2424
console_handler.setFormatter(formatter)
2525
logger.addHandler(console_handler)
2626
else:
27-
# rotated hourly if small file, o/w rotated bi-hourly
28-
if level == logging.DEBUG or level == logging.INFO:
29-
time = 30
27+
if rotating_logs:
28+
if not logger.handlers:
29+
# 5 MB max file size, 350 files max
30+
mb = 50
31+
bytes_in_mb = 1_048_576
32+
bytes = mb * bytes_in_mb
33+
file_handler = RotatingFileHandler(log_filename, maxBytes=bytes, backupCount=300)
34+
file_handler.setFormatter(formatter)
35+
logger.addHandler(file_handler)
3036
else:
31-
time = 60
32-
file_handler = TimedRotatingFileHandler(log_filename, when="M", interval=time, utc=True)
33-
if not logger.handlers:
37+
file_handler = logging.FileHandler(log_filename)
3438
file_handler.setFormatter(formatter)
3539
logger.addHandler(file_handler)
3640

@@ -43,28 +47,35 @@ def get_logger(
4347
level=logging.ERROR,
4448
print_console=False,
4549
log_format=None,
50+
rotating_logs=True,
4651
):
4752
stress_logger = logging.getLogger(logger_name)
4853
stress_logger.setLevel(level)
4954
eventhub_logger = logging.getLogger("azure.eventhub")
5055
eventhub_logger.setLevel(level)
51-
uamqp_logger = logging.getLogger("uamqp")
52-
uamqp_logger.setLevel(level)
5356

5457
formatter = log_format or logging.Formatter(
5558
"%(asctime)s - [%(thread)d.%(threadName)s] - %(name)-12s %(levelname)-8s %(funcName)s(%(lineno)d) %(message)s"
5659
)
5760

58-
# rotated hourly if small file, o/w rotated bi-hourly
59-
if level == logging.DEBUG or level == logging.INFO:
60-
time = 30
61+
if rotating_logs:
62+
# If any do not have handlers, create a new file handler and add.
63+
if not eventhub_logger.handlers or not stress_logger.handlers:
64+
# 5 MB max file size, 350 files max
65+
mb = 50
66+
bytes_in_mb = 1_048_576
67+
bytes = mb * bytes_in_mb
68+
file_handler = RotatingFileHandler(log_filename, maxBytes=bytes, backupCount=300)
69+
file_handler.setFormatter(formatter)
70+
if not eventhub_logger.handlers:
71+
eventhub_logger.addHandler(file_handler)
72+
if not stress_logger.handlers:
73+
stress_logger.addHandler(file_handler)
6174
else:
62-
time = 60
63-
file_handler = TimedRotatingFileHandler(log_filename, when="M", interval=time, utc=True)
64-
file_handler.setFormatter(formatter)
65-
eventhub_logger.addHandler(file_handler)
66-
uamqp_logger.addHandler(file_handler)
67-
stress_logger.addHandler(file_handler)
75+
console_handler = logging.FileHandler(log_filename)
76+
console_handler.setFormatter(formatter)
77+
eventhub_logger.addHandler(console_handler)
78+
stress_logger.addHandler(console_handler)
6879

6980
return stress_logger
7081

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
dependencies:
22
- name: stress-test-addons
33
repository: https://stresstestcharts.blob.core.windows.net/helm/
4-
version: 0.3.0
5-
digest: sha256:3e21a7fdf5d6b37e871a6dd9f755888166fbb24802aa517f51d1d9223b47656e
6-
generated: "2023-10-17T20:04:32.848343767-04:00"
4+
version: 0.3.4
5+
digest: sha256:e1d29df9556aaf06ee08fe1116695e6ce5396826b334b5c9d0f646da6599057f
6+
generated: "2025-01-07T13:56:37.7848059-08:00"

sdk/servicebus/azure-servicebus/stress/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
FROM mcr.microsoft.com/cbl-mariner/base/python:3
22

3+
# To install a package from a git branch, add the line below to the end of the following installs:
4+
# && yum install -y git
35
RUN yum update -y && yum install -y ca-certificates
46

57
WORKDIR /app

sdk/servicebus/azure-servicebus/stress/scenarios-matrix.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ matrix:
2626
testTarget: batchw
2727
abatchw:
2828
testTarget: abatchw
29-
memray:
30-
testTarget: memray
31-
amemray:
32-
testTarget: amemray
29+
#memray:
30+
# testTarget: memray
31+
#amemray:
32+
# testTarget: amemray

sdk/servicebus/azure-servicebus/stress/scripts/dev_requirements.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
aiohttp>=3.0
22
opencensus-ext-azure
33
psutil
4+
# To install from a specific git branch, replace the package with a req in the following format:
5+
# git+<gh-repo-url>@<branch>#subdirectory=<path/to/sdk>&egg=<package-name>
6+
# ex. git+https://github.com/l0lawrence/azure-sdk-for-python.git@sb_retries#subdirectory=sdk/servicebus/azure-servicebus&egg=azure-servicebus
47
azure-servicebus
58
python-dotenv
69
websocket-client

0 commit comments

Comments
 (0)