hoduyquocbao commited on
Commit
4f6ee5b
·
1 Parent(s): d5e187b

update fix logger

Browse files
app.py CHANGED
@@ -1,10 +1,16 @@
 
1
  import logging
2
  from channels.channel import Channel
3
  from entities.entity import Entity
4
  from interactors.interactor import Interactor
5
  from presenters.presenter import Presenter
6
  from routers.router import Router
7
- from views.view import View
 
 
 
 
 
8
 
9
  def initialize_app():
10
  # Tạo các thành phần
@@ -26,5 +32,6 @@ def initialize_app():
26
  router.navigate('Home')
27
 
28
  if __name__ == "__main__":
29
- logging.basicConfig(level=logging.INFO)
30
- initialize_app()
 
 
1
+
2
  import logging
3
  from channels.channel import Channel
4
  from entities.entity import Entity
5
  from interactors.interactor import Interactor
6
  from presenters.presenter import Presenter
7
  from routers.router import Router
8
+ from components.view import View
9
+
10
+ setup_logging = __import__('logging_config').setup_logging
11
+ setup_logging()
12
+
13
+ logger = logging.getLogger('app')
14
 
15
  def initialize_app():
16
  # Tạo các thành phần
 
32
  router.navigate('Home')
33
 
34
  if __name__ == "__main__":
35
+ logger.info("Application started")
36
+ initialize_app()
37
+ logger.info("Application finished")
channels/channel.py CHANGED
@@ -1,5 +1,11 @@
 
1
  import logging
2
 
 
 
 
 
 
3
  class Event:
4
  def __init__(self):
5
  self.listeners = {}
@@ -8,21 +14,21 @@ class Event:
8
  if event not in self.listeners:
9
  self.listeners[event] = []
10
  self.listeners[event].append(listener)
11
- logging.info(f"Registered listener for event: {event}")
12
 
13
  def off(self, event: str, listener: callable):
14
  if event in self.listeners:
15
  self.listeners[event] = [l for l in self.listeners[event] if l != listener]
16
- logging.info(f"Unregistered listener for event: {event}")
17
 
18
  def emit(self, event: str, *args, **kwargs):
19
  if event in self.listeners:
20
  for listener in self.listeners[event]:
21
  try:
22
  listener(*args, **kwargs)
23
- logging.info(f"Emitted event: {event}")
24
  except Exception as e:
25
- logging.error(f"Error emitting event {event}: {e}")
26
 
27
  class Channel:
28
  def __init__(self):
 
1
+
2
  import logging
3
 
4
+ setup_logging = __import__('logging_config').setup_logging
5
+ setup_logging()
6
+
7
+ logger = logging.getLogger('channels')
8
+
9
  class Event:
10
  def __init__(self):
11
  self.listeners = {}
 
14
  if event not in self.listeners:
15
  self.listeners[event] = []
16
  self.listeners[event].append(listener)
17
+ logger.info(f"Registered listener for event: {event}")
18
 
19
  def off(self, event: str, listener: callable):
20
  if event in self.listeners:
21
  self.listeners[event] = [l for l in self.listeners[event] if l != listener]
22
+ logger.info(f"Unregistered listener for event: {event}")
23
 
24
  def emit(self, event: str, *args, **kwargs):
25
  if event in self.listeners:
26
  for listener in self.listeners[event]:
27
  try:
28
  listener(*args, **kwargs)
29
+ logger.info(f"Emitted event: {event}")
30
  except Exception as e:
31
+ logger.error(f"Error emitting event {event}: {e}")
32
 
33
  class Channel:
34
  def __init__(self):
entities/entity.py CHANGED
@@ -2,36 +2,41 @@
2
  from dataclasses import dataclass, field
3
  import logging
4
 
 
 
 
 
 
5
  @dataclass
6
  class Entity:
7
  data: dict = field(default_factory=dict)
8
 
9
  def create(self, key: str, value: any):
10
  if not isinstance(key, str) or value is None:
11
- logging.error('Invalid key or value')
12
  return
13
  self.data[key] = value
14
- logging.info(f"Create: {key} = {value}")
15
 
16
  def read(self, key: str):
17
  if not isinstance(key, str):
18
- logging.error('Invalid key')
19
  return
20
  value = self.data.get(key)
21
- logging.info(f"Read: {key} = {value}")
22
  return value
23
 
24
  def update(self, key: str, value: any):
25
  if not isinstance(key, str) or value is None:
26
- logging.error('Invalid key or value')
27
  return
28
  self.data[key] = value
29
- logging.info(f"Update: {key} = {value}")
30
 
31
  def delete(self, key: str):
32
  if not isinstance(key, str):
33
- logging.error('Invalid key')
34
  return
35
  if key in self.data:
36
  del self.data[key]
37
- logging.info(f"Delete: {key}")
 
2
  from dataclasses import dataclass, field
3
  import logging
4
 
5
+ setup_logging = __import__('logging_config').setup_logging
6
+ setup_logging()
7
+
8
+ logger = logging.getLogger('entities')
9
+
10
  @dataclass
11
  class Entity:
12
  data: dict = field(default_factory=dict)
13
 
14
  def create(self, key: str, value: any):
15
  if not isinstance(key, str) or value is None:
16
+ logger.error('Invalid key or value')
17
  return
18
  self.data[key] = value
19
+ logger.info(f"Create: {key} = {value}")
20
 
21
  def read(self, key: str):
22
  if not isinstance(key, str):
23
+ logger.error('Invalid key')
24
  return
25
  value = self.data.get(key)
26
+ logger.info(f"Read: {key} = {value}")
27
  return value
28
 
29
  def update(self, key: str, value: any):
30
  if not isinstance(key, str) or value is None:
31
+ logger.error('Invalid key or value')
32
  return
33
  self.data[key] = value
34
+ logger.info(f"Update: {key} = {value}")
35
 
36
  def delete(self, key: str):
37
  if not isinstance(key, str):
38
+ logger.error('Invalid key')
39
  return
40
  if key in self.data:
41
  del self.data[key]
42
+ logger.info(f"Delete: {key}")
interactors/interactor.py CHANGED
@@ -1,9 +1,13 @@
 
1
  import logging
2
- from channels.channel import Channel
3
- from entities.entity import Entity
 
 
 
4
 
5
  class Interactor:
6
- def __init__(self, channel: Channel, entity: Entity):
7
  self.channel = channel
8
  self.entity = entity
9
  self.channel.on('create', self.create)
@@ -14,27 +18,27 @@ class Interactor:
14
  def create(self, key: str, value: any):
15
  try:
16
  self.entity.create(key, value)
17
- logging.info(f"Create event emitted: {key} = {value}")
18
  except Exception as e:
19
- logging.error(f"Error emitting create event: {e}")
20
 
21
  def read(self, key: str):
22
  try:
23
  self.entity.read(key)
24
- logging.info(f"Read event emitted: {key}")
25
  except Exception as e:
26
- logging.error(f"Error emitting read event: {e}")
27
 
28
  def update(self, key: str, value: any):
29
  try:
30
  self.entity.update(key, value)
31
- logging.info(f"Update event emitted: {key} = {value}")
32
  except Exception as e:
33
- logging.error(f"Error emitting update event: {e}")
34
 
35
  def delete(self, key: str):
36
  try:
37
  self.entity.delete(key)
38
- logging.info(f"Delete event emitted: {key}")
39
  except Exception as e:
40
- logging.error(f"Error emitting delete event: {e}")
 
1
+
2
  import logging
3
+
4
+ setup_logging = __import__('logging_config').setup_logging
5
+ setup_logging()
6
+
7
+ logger = logging.getLogger('interactors')
8
 
9
  class Interactor:
10
+ def __init__(self, channel, entity):
11
  self.channel = channel
12
  self.entity = entity
13
  self.channel.on('create', self.create)
 
18
  def create(self, key: str, value: any):
19
  try:
20
  self.entity.create(key, value)
21
+ logger.info(f"Create event emitted: {key} = {value}")
22
  except Exception as e:
23
+ logger.error(f"Error emitting create event: {e}")
24
 
25
  def read(self, key: str):
26
  try:
27
  self.entity.read(key)
28
+ logger.info(f"Read event emitted: {key}")
29
  except Exception as e:
30
+ logger.error(f"Error emitting read event: {e}")
31
 
32
  def update(self, key: str, value: any):
33
  try:
34
  self.entity.update(key, value)
35
+ logger.info(f"Update event emitted: {key} = {value}")
36
  except Exception as e:
37
+ logger.error(f"Error emitting update event: {e}")
38
 
39
  def delete(self, key: str):
40
  try:
41
  self.entity.delete(key)
42
+ logger.info(f"Delete event emitted: {key}")
43
  except Exception as e:
44
+ logger.error(f"Error emitting delete event: {e}")
logging_config.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import logging
3
+ import logging.config
4
+
5
+ def setup_logging():
6
+ logging_config = {
7
+ 'version': 1,
8
+ 'disable_existing_loggers': False,
9
+ 'formatters': {
10
+ 'standard': {
11
+ 'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
12
+ },
13
+ },
14
+ 'handlers': {
15
+ 'file_handler': {
16
+ 'class': 'logging.FileHandler',
17
+ 'filename': 'app.log',
18
+ 'formatter': 'standard',
19
+ },
20
+ 'console_handler': {
21
+ 'class': 'logging.StreamHandler',
22
+ 'formatter': 'standard',
23
+ },
24
+ },
25
+ 'loggers': {
26
+ 'app': {
27
+ 'handlers': ['file_handler', 'console_handler'],
28
+ 'level': 'INFO',
29
+ 'propagate': False,
30
+ },
31
+ 'channels': {
32
+ 'handlers': ['file_handler', 'console_handler'],
33
+ 'level': 'INFO',
34
+ 'propagate': False,
35
+ },
36
+ 'entities': {
37
+ 'handlers': ['file_handler', 'console_handler'],
38
+ 'level': 'INFO',
39
+ 'propagate': False,
40
+ },
41
+ 'interactors': {
42
+ 'handlers': ['file_handler', 'console_handler'],
43
+ 'level': 'INFO',
44
+ 'propagate': False,
45
+ },
46
+ 'presenters': {
47
+ 'handlers': ['file_handler', 'console_handler'],
48
+ 'level': 'INFO',
49
+ 'propagate': False,
50
+ },
51
+ 'routers': {
52
+ 'handlers': ['file_handler', 'console_handler'],
53
+ 'level': 'INFO',
54
+ 'propagate': False,
55
+ },
56
+ 'components': {
57
+ 'handlers': ['file_handler', 'console_handler'],
58
+ 'level': 'INFO',
59
+ 'propagate': False,
60
+ },
61
+ },
62
+ }
63
+
64
+ logging.config.dictConfig(logging_config)
presenters/presenter.py CHANGED
@@ -1,13 +1,18 @@
 
1
  import logging
2
- from channels.channel import Channel
 
 
 
 
3
 
4
  class Presenter:
5
- def __init__(self, channel: Channel):
6
  self.channel = channel
7
 
8
  def handle(self, event: str, *args, **kwargs):
9
  try:
10
  self.channel.emit(event, *args, **kwargs)
11
- logging.info(f"Event handled: {event}")
12
  except Exception as e:
13
- logging.error(f"Error handling event {event}: {e}")
 
1
+
2
  import logging
3
+
4
+ setup_logging = __import__('logging_config').setup_logging
5
+ setup_logging()
6
+
7
+ logger = logging.getLogger('presenters')
8
 
9
  class Presenter:
10
+ def __init__(self, channel):
11
  self.channel = channel
12
 
13
  def handle(self, event: str, *args, **kwargs):
14
  try:
15
  self.channel.emit(event, *args, **kwargs)
16
+ logger.info(f"Event handled: {event}")
17
  except Exception as e:
18
+ logger.error(f"Error handling event {event}: {e}")
routers/router.py CHANGED
@@ -1,14 +1,19 @@
 
1
  import logging
2
- from channels.channel import Channel
 
 
 
 
3
 
4
  class Router:
5
- def __init__(self, channel: Channel):
6
  self.channel = channel
7
  self.channel.on('navigate', self.navigate)
8
 
9
  def navigate(self, screen: str):
10
  try:
11
- logging.info(f"Navigate to {screen}")
12
  self.channel.emit('navigate', screen)
13
  except Exception as e:
14
- logging.error(f"Error navigating to {screen}: {e}")
 
1
+
2
  import logging
3
+
4
+ setup_logging = __import__('logging_config').setup_logging
5
+ setup_logging()
6
+
7
+ logger = logging.getLogger('routers')
8
 
9
  class Router:
10
+ def __init__(self, channel):
11
  self.channel = channel
12
  self.channel.on('navigate', self.navigate)
13
 
14
  def navigate(self, screen: str):
15
  try:
16
+ logger.info(f"Navigate to {screen}")
17
  self.channel.emit('navigate', screen)
18
  except Exception as e:
19
+ logger.error(f"Error navigating to {screen}: {e}")
views/view.py CHANGED
@@ -1,8 +1,14 @@
 
1
  import gradio as gr
2
- from channels.channel import Channel
 
 
 
 
 
3
 
4
  class View:
5
- def __init__(self, channel: Channel):
6
  self.channel = channel
7
  self.channel.on('render', self.render)
8
  self.channel.on('update', self.update)
@@ -12,9 +18,11 @@ class View:
12
  gr.Markdown("## Welcome to VIPER Architecture")
13
  gr.Markdown("This is a sample view rendering.")
14
  demo.launch()
 
15
 
16
  def update(self, content: str):
17
  with gr.Blocks() as demo:
18
  gr.Markdown("## Welcome to VIPER Architecture")
19
  gr.Markdown(content)
20
- demo.launch()
 
 
1
+
2
  import gradio as gr
3
+ import logging
4
+
5
+ setup_logging = __import__('logging_config').setup_logging
6
+ setup_logging()
7
+
8
+ logger = logging.getLogger('components')
9
 
10
  class View:
11
+ def __init__(self, channel):
12
  self.channel = channel
13
  self.channel.on('render', self.render)
14
  self.channel.on('update', self.update)
 
18
  gr.Markdown("## Welcome to VIPER Architecture")
19
  gr.Markdown("This is a sample view rendering.")
20
  demo.launch()
21
+ logger.info("Rendered view")
22
 
23
  def update(self, content: str):
24
  with gr.Blocks() as demo:
25
  gr.Markdown("## Welcome to VIPER Architecture")
26
  gr.Markdown(content)
27
+ demo.launch()
28
+ logger.info(f"Updated view with content: {content}")