Skip to content

Commit 9b0f5a5

Browse files
committed
update logger based on review
1 parent 908e08e commit 9b0f5a5

File tree

4 files changed

+37
-27
lines changed

4 files changed

+37
-27
lines changed

server.py

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@
88
import logging
99
import grpc
1010
import argparse
11+
import datetime
1112

1213

1314
console_logging_level = logging.INFO
1415
file_logging_level = logging.DEBUG
1516

16-
main_logger = setup_logger("pmservice", "logs/pmservice.log", console_level=console_logging_level, file_level=file_logging_level)
17+
main_logger = None
18+
log_dir = None
1719

1820

1921
class GrpcAgent:
@@ -168,7 +170,7 @@ def Register(self, register_request: pb2.RegisterRequest, context):
168170
team_name=team_name,
169171
uniform_number=uniform_number,
170172
agent_type=agent_type)
171-
logger = setup_logger(f"agent{register_response.uniform_number}_{register_response.client_id}")
173+
logger = setup_logger(f"agent{register_response.uniform_number}_{register_response.client_id}", log_dir)
172174
self.agents[self.shared_number_of_connections.value] = GrpcAgent(agent_type, uniform_number, logger)
173175
return register_response
174176

@@ -198,13 +200,19 @@ def serve(port, shared_lock, shared_number_of_connections):
198200

199201

200202
def main():
203+
global main_logger, log_dir
204+
parser = argparse.ArgumentParser(description='Run play maker server')
205+
parser.add_argument('-p', '--rpc-port', required=False, help='The port of the server', default=50051)
206+
parser.add_argument('-l', '--log-dir', required=False, help='The directory of the log file',
207+
default=f'logs/{datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")}')
208+
args = parser.parse_args()
209+
log_dir = args.log_dir
210+
main_logger = setup_logger("pmservice", log_dir, console_level=console_logging_level, file_level=file_logging_level)
201211
main_logger.info("Starting server")
202212
manager = Manager()
203213
shared_lock = Lock() # Create a Lock for synchronization
204214
shared_number_of_connections = manager.Value('i', 0)
205-
parser = argparse.ArgumentParser(description='Run play maker server')
206-
parser.add_argument('-p', '--rpc-port', required=False, help='The port of the server', default=50051)
207-
args = parser.parse_args()
215+
208216
serve(args.rpc_port, shared_lock, shared_number_of_connections)
209217

210218
if __name__ == '__main__':

start-team.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@
66
import argparse
77
import check_requirements
88
from utils.logger_utils import setup_logger
9+
import datetime
910

1011

1112
# remove logs directory
12-
os.system("rm -rf logs")
13+
log_dir = os.path.join(os.getcwd(), 'logs', datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
1314

1415
# Set up logging
15-
start_team_logger = setup_logger('start-team', 'logs/start-team.log', console_level=logging.DEBUG, file_level=logging.DEBUG, console_format_str='%(message)s')
16+
start_team_logger = setup_logger('start-team', log_dir, console_level=logging.DEBUG, file_level=logging.DEBUG, console_format_str='%(message)s')
1617

1718
def run_server_script(args):
1819
# Start the server.py script as a new process group
1920
process = subprocess.Popen(
20-
['python3', 'server.py', '--rpc-port', args.rpc_port],
21+
['python3', 'server.py', '--rpc-port', args.rpc_port, '--log-dir', log_dir],
2122
preexec_fn=os.setsid, # Create a new session and set the process group ID
2223
stdout=subprocess.PIPE,
2324
stderr=subprocess.STDOUT # Capture stderr and redirect it to stdout
@@ -43,7 +44,7 @@ def stream_output_to_console(process, prefix):
4344

4445
def stream_output_to_file(process, prefix):
4546
# Stream output from the process and log it with a prefix
46-
logger = setup_logger(prefix, console_level=None, file_level=logging.DEBUG)
47+
logger = setup_logger(prefix, log_dir, console_level=None, file_level=logging.DEBUG)
4748
for line in iter(process.stdout.readline, b''):
4849
logger.info(line.decode().strip())
4950
pass
@@ -77,8 +78,8 @@ def kill_process_group(process):
7778
start_team_logger.debug(f"Started start.sh process with PID: {start_process.pid} with team name {args=}")
7879

7980
# Monitor both processes and log their outputs
80-
server_thread = threading.Thread(target=stream_output_to_console, args=(server_process, 'server:'))
81-
start_thread = threading.Thread(target=stream_output_to_file, args=(start_process, 'proxy:'))
81+
server_thread = threading.Thread(target=stream_output_to_console, args=(server_process, 'server'))
82+
start_thread = threading.Thread(target=stream_output_to_file, args=(start_process, 'proxy'))
8283

8384
server_thread.start()
8485
start_thread.start()

start-team.sh

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#!/bin/bash
22

3-
# remove logs directory
4-
rm -rf logs
5-
# create logs directory
6-
if [ ! -d "./logs" ]; then
7-
mkdir -p "./logs"
3+
# create a log directory with the current date and time
4+
log_dir="logs/$(date +'%Y-%m-%d_%H-%M-%S')"
5+
if [ ! -d $log_dir ]; then
6+
mkdir -p $log_dir
87
fi
98

9+
abs_log_dir_path=$(realpath $log_dir)
10+
1011
# Ensure the script exits if any command fails
1112
set -e
1213
# check scripts/proxy directory does not exist, raise error
@@ -60,7 +61,7 @@ python3 check_requirements.py
6061

6162
# Start server.py in the background
6263
echo "Starting server.py..."
63-
python3 server.py --rpc-port $rpc_port &
64+
python3 server.py --rpc-port $rpc_port --log-dir $abs_log_dir_path &
6465
server_pid=$!
6566

6667
# Function to kill server and team processes on exit
@@ -78,13 +79,13 @@ sleep 2
7879

7980
# Start start.sh script in the correct directory with arguments
8081
echo "Starting start.sh with team name: $team_name and ..."
81-
log_dir="logs/proxy.log"
82-
abspath=$(realpath $log_dir)
82+
83+
start_log_path="$abs_log_dir_path/proxy.log"
8384
cd scripts/proxy
8485
if [ "$debug" = true ]; then
85-
bash start-debug.sh -t "$team_name" --rpc-port $rpc_port --rpc-type grpc >> $abspath 2>&1 &
86+
bash start-debug.sh -t "$team_name" --rpc-port $rpc_port --rpc-type grpc >> $start_log_path 2>&1 &
8687
else
87-
bash start.sh -t "$team_name" --rpc-port $rpc_port --rpc-type grpc >> $abspath 2>&1 &
88+
bash start.sh -t "$team_name" --rpc-port $rpc_port --rpc-type grpc >> $start_log_path 2>&1 &
8889
fi
8990
start_pid=$!
9091

utils/logger_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import os
33

44

5-
def setup_logger(name, log_file=None, console_level=logging.INFO, file_level=logging.DEBUG, console_format_str=None, file_format_str=None):
5+
def setup_logger(name, log_dir, console_level=logging.INFO, file_level=logging.DEBUG, console_format_str=None, file_format_str=None):
66
"""
77
Set up a logger that writes to both a file and the console, with different formats and levels.
88
@@ -14,14 +14,14 @@ def setup_logger(name, log_file=None, console_level=logging.INFO, file_level=log
1414
"""
1515
have_console_handler = console_level is not None
1616
have_file_handler = file_level is not None
17-
if log_file is None:
18-
log_file = os.path.join('logs', f'{name}.log')
17+
18+
if not os.path.exists(log_dir):
19+
os.makedirs(log_dir)
20+
21+
log_file = os.path.join(log_dir, f'{name}.log')
1922
# Directory
2023
directory = os.path.dirname(log_file)
21-
if directory and not os.path.exists(directory):
22-
os.makedirs(directory)
2324

24-
print(f"have_console_handler={have_console_handler}, have_file_handler={have_file_handler}", log_file, directory)
2525
# Create a custom logger
2626
logger = logging.getLogger(name)
2727

0 commit comments

Comments
 (0)