mirror of
https://github.com/imayushsaini/Bombsquad-Ballistica-Modded-Server.git
synced 2025-11-14 17:46:03 +00:00
configurable error logging
This commit is contained in:
parent
61e949f909
commit
72583e1ea9
1 changed files with 85 additions and 72 deletions
|
|
@ -16,6 +16,10 @@ from pathlib import Path
|
|||
from threading import Lock, Thread, current_thread
|
||||
from typing import TYPE_CHECKING
|
||||
from nbstreamreader import NonBlockingStreamReader as NBSR
|
||||
|
||||
ERROR_LOGGING=False
|
||||
|
||||
|
||||
# We make use of the bacommon and efro packages as well as site-packages
|
||||
# included with our bundled Ballistica dist, so we need to add those paths
|
||||
# before we import them.
|
||||
|
|
@ -36,6 +40,7 @@ if TYPE_CHECKING:
|
|||
|
||||
VERSION_STR = '1.3'
|
||||
|
||||
|
||||
# Version history:
|
||||
# 1.3.1
|
||||
# Windows binary is now named BallisticaCoreHeadless.exe
|
||||
|
|
@ -100,7 +105,7 @@ class ServerManagerApp:
|
|||
self._subprocess_sent_unclean_exit = False
|
||||
self._subprocess_thread: Optional[Thread] = None
|
||||
self._subprocess_exited_cleanly: Optional[bool] = None
|
||||
self.nbsr=None
|
||||
self.nbsr = None
|
||||
# This may override the above defaults.
|
||||
self._parse_command_line_args()
|
||||
|
||||
|
|
@ -479,8 +484,8 @@ class ServerManagerApp:
|
|||
print(
|
||||
f'{Clr.CYN}Please correct the error.'
|
||||
f' Will re-attempt load in {retry_seconds}'
|
||||
f' seconds. (attempt {trynum+1} of'
|
||||
f' {maxtries-1}).{Clr.RST}',
|
||||
f' seconds. (attempt {trynum + 1} of'
|
||||
f' {maxtries - 1}).{Clr.RST}',
|
||||
flush=True)
|
||||
|
||||
for _j in range(retry_seconds):
|
||||
|
|
@ -584,17 +589,22 @@ class ServerManagerApp:
|
|||
|
||||
# Launch!
|
||||
try:
|
||||
|
||||
|
||||
if ERROR_LOGGING:
|
||||
self._subprocess = subprocess.Popen(
|
||||
[binary_name, '-cfgdir', self._ba_root_path ],
|
||||
[binary_name, '-cfgdir', self._ba_root_path],
|
||||
stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
cwd='dist')
|
||||
|
||||
self.nbsr=NBSR(self._subprocess.stdout)
|
||||
self.nbsrerr=NBSR(self._subprocess.stderr)
|
||||
self.nbsr = NBSR(self._subprocess.stdout)
|
||||
self.nbsrerr = NBSR(self._subprocess.stderr)
|
||||
else:
|
||||
self._subprocess = subprocess.Popen(
|
||||
[binary_name, '-cfgdir', self._ba_root_path],
|
||||
stdin=subprocess.PIPE,
|
||||
cwd='dist')
|
||||
|
||||
except Exception as exc:
|
||||
self._subprocess_exited_cleanly = False
|
||||
print(
|
||||
|
|
@ -724,14 +734,15 @@ class ServerManagerApp:
|
|||
break
|
||||
# output=self._subprocess.stdout.readline()
|
||||
# print(output)
|
||||
out=self.nbsr.readline(0.1)
|
||||
out2=self.nbsrerr.readline(0.1)
|
||||
if ERROR_LOGGING:
|
||||
out = self.nbsr.readline(0.1)
|
||||
out2 = self.nbsrerr.readline(0.1)
|
||||
if out:
|
||||
sys.stdout.write(out.decode("utf-8") )
|
||||
_thread.start_new_thread(dump_logs,(out.decode("utf-8"),))
|
||||
sys.stdout.write(out.decode("utf-8"))
|
||||
_thread.start_new_thread(dump_logs, (out.decode("utf-8"),))
|
||||
if out2:
|
||||
sys.stdout.write(out2.decode("utf-8") )
|
||||
_thread.start_new_thread(dump_logs,(out2.decode("utf-8"),))
|
||||
sys.stdout.write(out2.decode("utf-8"))
|
||||
_thread.start_new_thread(dump_logs, (out2.decode("utf-8"),))
|
||||
# Pass along any commands to our process.
|
||||
with self._subprocess_commands_lock:
|
||||
for incmd in self._subprocess_commands:
|
||||
|
|
@ -763,7 +774,6 @@ class ServerManagerApp:
|
|||
# Watch for the server process exiting..
|
||||
code: Optional[int] = self._subprocess.poll()
|
||||
if code is not None:
|
||||
|
||||
clr = Clr.CYN if code == 0 else Clr.RED
|
||||
print(
|
||||
f'{clr}Server subprocess exited'
|
||||
|
|
@ -883,15 +893,18 @@ def main() -> None:
|
|||
# Any others will bubble up and give us the usual mess.
|
||||
exc.pretty_print()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def dump_logs(msg):
|
||||
if os.path.isfile('logs.log'):
|
||||
size=os.path.getsize('logs.log')
|
||||
size = os.path.getsize('logs.log')
|
||||
|
||||
if size > 2000000:
|
||||
os.remove('logs.log')
|
||||
|
||||
with open("logs.log","a") as f:
|
||||
with open("logs.log", "a") as f:
|
||||
f.write(msg)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue