summaryrefslogtreecommitdiff
path: root/continuedev/src
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-07-27 11:23:55 -0700
committerNate Sesti <sestinj@gmail.com>2023-07-27 11:23:55 -0700
commit5d973490687c40922f2b7a2ddf2a3e19c207eb0f (patch)
treefab63009bd6014cd8ded1bd0a536727e0228b055 /continuedev/src
parent4e47da8398ac1cecb6f7100568f0f7296baaeac9 (diff)
downloadsncontinue-5d973490687c40922f2b7a2ddf2a3e19c207eb0f.tar.gz
sncontinue-5d973490687c40922f2b7a2ddf2a3e19c207eb0f.tar.bz2
sncontinue-5d973490687c40922f2b7a2ddf2a3e19c207eb0f.zip
feat: :loud_sound: give users access to Continue server logs
can see logs in ~/.continue/continue.log
Diffstat (limited to 'continuedev/src')
-rw-r--r--continuedev/src/continuedev/libs/util/paths.py5
-rw-r--r--continuedev/src/continuedev/plugins/context_providers/file.py35
-rw-r--r--continuedev/src/continuedev/server/main.py29
3 files changed, 51 insertions, 18 deletions
diff --git a/continuedev/src/continuedev/libs/util/paths.py b/continuedev/src/continuedev/libs/util/paths.py
index 14a97f57..b08b0949 100644
--- a/continuedev/src/continuedev/libs/util/paths.py
+++ b/continuedev/src/continuedev/libs/util/paths.py
@@ -44,3 +44,8 @@ def getConfigFilePath() -> str:
f.write(getDefaultConfigFile())
return path
+
+
+def getLogFilePath():
+ path = os.path.join(getGlobalFolderPath(), "continue.log")
+ return path
diff --git a/continuedev/src/continuedev/plugins/context_providers/file.py b/continuedev/src/continuedev/plugins/context_providers/file.py
index 90835d98..31c8e1d9 100644
--- a/continuedev/src/continuedev/plugins/context_providers/file.py
+++ b/continuedev/src/continuedev/plugins/context_providers/file.py
@@ -13,14 +13,13 @@ def get_file_contents(filepath: str) -> str:
try:
filesize = os.path.getsize(filepath)
if filesize > MAX_SIZE_IN_BYTES:
- print("File is over 1MB size limit: ", filepath, filesize)
- return ""
+ return None
with open(filepath, "r") as f:
return f.read()
except Exception as e:
- print("Error reading file contents", filepath, e)
- return ""
+ # Some files cannot be read, e.g. binary files
+ return None
DEFAULT_IGNORE_DIRS = [
@@ -68,15 +67,21 @@ class FileContextProvider(ContextProvider):
if len(filepaths) > 1000:
break
- return [ContextItem(
- content=get_file_contents(file)[:min(
- 2000, len(get_file_contents(file)))],
- description=ContextItemDescription(
- name=os.path.basename(file),
- description=file,
- id=ContextItemId(
- provider_title=self.title,
- item_id=re.sub(r'[^0-9a-zA-Z_-]', '', file)
+ items = []
+ for file in filepaths:
+ content = get_file_contents(file)
+ if content is None:
+ continue # no pun intended
+
+ items.append(ContextItem(
+ content=content[:min(2000, len(content))],
+ description=ContextItemDescription(
+ name=os.path.basename(file),
+ description=file,
+ id=ContextItemId(
+ provider_title=self.title,
+ item_id=re.sub(r'[^0-9a-zA-Z_-]', '', file)
+ )
)
- )
- ) for file in filepaths]
+ ))
+ return items
diff --git a/continuedev/src/continuedev/server/main.py b/continuedev/src/continuedev/server/main.py
index 0b59d4fe..e155fad4 100644
--- a/continuedev/src/continuedev/server/main.py
+++ b/continuedev/src/continuedev/server/main.py
@@ -1,4 +1,5 @@
import asyncio
+import sys
import time
import psutil
import os
@@ -7,10 +8,13 @@ from fastapi.middleware.cors import CORSMiddleware
import atexit
import uvicorn
import argparse
+import logging.config
+
from .ide import router as ide_router
from .gui import router as gui_router
from .session_manager import session_manager
+from ..libs.util.paths import getLogFilePath
app = FastAPI()
@@ -39,12 +43,31 @@ parser.add_argument("-p", "--port", help="server port",
type=int, default=65432)
args = parser.parse_args()
+LOGGING_CONFIG = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'handlers': {
+ 'file': {
+ 'level': 'DEBUG',
+ 'class': 'logging.FileHandler',
+ 'filename': 'uvicorn.log',
+ },
+ },
+ 'root': {
+ 'level': 'DEBUG',
+ 'handlers': ['file']
+ }
+}
+
+logging.config.dictConfig(LOGGING_CONFIG)
+sys.stdout = open(getLogFilePath(), 'w')
-# log_file = open('output.log', 'a')
-# sys.stdout = log_file
def run_server():
- uvicorn.run(app, host="0.0.0.0", port=args.port)
+ config = uvicorn.Config(app, host="0.0.0.0", port=args.port)
+ server = uvicorn.Server(config)
+
+ server.run()
async def cleanup_coroutine():