Skip to content

Commit 29e37f4

Browse files
Add persist_logs bool and integrate throughout the config flow
Add many logger.info chunks for testing
1 parent 3c3cadb commit 29e37f4

3 files changed

Lines changed: 33 additions & 27 deletions

File tree

amplipi/app.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import argparse
2626

27+
import configparser
2728
import logging
2829
import sys
2930

@@ -238,9 +239,35 @@ def shutdown():
238239
}
239240
)
240241
def log_persistance(ctrl: Api = Depends(get_ctrl)):
242+
"""Toggles log persistance by directly changing the journald.conf and restarting the service"""
241243
try:
242-
ctrl.toggle_log_persist()
244+
logger.info("log_persistance called!")
245+
conf_path = '/etc/systemd/journald.conf'
246+
247+
config = configparser.ConfigParser(strict=False, allow_no_value=True)
248+
config.read(conf_path)
249+
250+
if 'Journal' not in config:
251+
config.add_section('Journal')
252+
253+
logger.info(f"Perist logs is {ctrl.persist_logs} before")
254+
if ctrl.persist_logs: # Reset config to default as seen in configure.py
255+
config.set('Journal', 'Storage', 'volatile')
256+
config.set('Journal', 'RuntimeMaxUse', '64M')
257+
config.set('Journal', 'ForwardToConsole', 'no')
258+
config.set('Journal', 'ForwardToWall', 'no')
259+
ctrl.persist_logs = False
260+
logger.info("log_persistance deactivated!")
261+
else: # Set persist
262+
config.set('Journal', 'Storage', 'persistant')
263+
config.set('Journal', 'SyncIntervalSec', '30s')
264+
config.set('Journal', 'SystemMaxUse', '64M')
265+
ctrl.persist_logs = True
266+
logger.info("log_persistance activated!")
267+
logger.info(f"Perist logs is {ctrl.persist_logs} after")
268+
os.system('sudo systemctl restart systemd-journald')
243269
except Exception as e:
270+
logger.error("log_persistance failed!")
244271
raise e
245272

246273

amplipi/ctrl.py

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import sys
3333
import datetime
3434

35-
import configparser
3635
import threading
3736
import wrapt
3837

@@ -124,7 +123,7 @@ class Api:
124123
status: models.Status
125124
streams: Dict[int, amplipi.streams.AnyStream]
126125
lms_mode: bool
127-
persist_logs: bool
126+
persist_logs: bool = False
128127
_serial: Optional[int] = None
129128
_expanders: List[int] = []
130129
_freeze_delete_temporary: bool = False
@@ -248,6 +247,7 @@ def reinit(self, settings: models.AppSettings = models.AppSettings(), change_not
248247
config_file=self.config_file,
249248
is_streamer=self.is_streamer,
250249
lms_mode=self.lms_mode,
250+
persist_logs=self.persist_logs,
251251
version=utils.detect_version(),
252252
stream_types_available=amplipi.streams.stream_types_available(),
253253
extra_fields=utils.load_extra_fields(),
@@ -1448,27 +1448,3 @@ def play_media(self, media: models.PlayMedia) -> ApiResponse:
14481448
self.set_source(media.source_id, src_update, internal=True, force_update=True)
14491449

14501450
return ApiResponse.ok()
1451-
1452-
def toggle_log_persist(self):
1453-
"""Toggles log persistance by directly changing the journald.conf and restarting the service"""
1454-
conf_path = '/etc/systemd/journald.conf'
1455-
1456-
config = configparser.ConfigParser(strict=False, allow_no_value=True)
1457-
config.read(conf_path)
1458-
1459-
if 'Journal' not in config:
1460-
config.add_section('Journal')
1461-
1462-
if self.persist_logs: # Reset config to default as seen in configure.py
1463-
config.set('Journal', 'Storage', 'volatile')
1464-
config.set('Journal', 'RuntimeMaxUse', '64M')
1465-
config.set('Journal', 'ForwardToConsole', 'no')
1466-
config.set('Journal', 'ForwardToWall', 'no')
1467-
self.persist_logs = False
1468-
else: # Set persist
1469-
config.set('Journal', 'Storage', 'persistant')
1470-
config.set('Journal', 'SyncIntervalSec', '30s')
1471-
config.set('Journal', 'SystemMaxUse', '64M')
1472-
self.persist_logs = True
1473-
1474-
os.system('sudo systemctl restart systemd-journald')

amplipi/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -965,6 +965,7 @@ class Info(BaseModel):
965965
latest_release: str = Field(default='unknown', description='Latest software release available from GitHub')
966966
access_key: str = Field(default='', description='session token/API key used for authentication')
967967
lms_mode: bool = Field(default=False, description='Are we running in LMS mode?')
968+
persist_logs: bool = Field(default=False, description='Are saving logs to disc?')
968969
serial: str = Field(default=False, description='Serial Number of this AmpliPi')
969970
expanders: List[str] = Field(default=[], description='Serial Numbers of any expanders connected to this AmpliPi')
970971
fw: List[FirmwareInfo] = Field(
@@ -987,6 +988,7 @@ class Config:
987988
'latest_release': '0.3.4',
988989
'access_key': '',
989990
'lms_mode': False,
991+
'persist_logs': False,
990992
'serial': '212',
991993
'expanders': ['112', '113'],
992994
'fw': [
@@ -1080,6 +1082,7 @@ class Config:
10801082
'mock_streams': False,
10811083
'is_streamer': False,
10821084
'lms_mode': False,
1085+
'persist_logs': False,
10831086
'online': True,
10841087
'stream_types_available': ['fmradio', 'internetradio'],
10851088
'version': '0.1.9'},

0 commit comments

Comments
 (0)