Skip to content

Commit def31b4

Browse files
karlvrrgrunber
authored andcommitted
Add commands to view Java Language Server debug and error logs
- Open log files in same view column, outside preview-mode for better visibility Resolves #2367 Signed-off-by: Karl von Randow <[email protected]>
1 parent d95b796 commit def31b4

File tree

7 files changed

+49
-10
lines changed

7 files changed

+49
-10
lines changed

package.json

+10-4
Original file line numberDiff line numberDiff line change
@@ -924,13 +924,19 @@
924924
},
925925
{
926926
"command": "java.open.serverLog",
927-
"title": "%java.open.serverLog%",
928-
"category": "Java"
927+
"when": "false"
928+
},
929+
{
930+
"command": "java.open.serverStdoutLog",
931+
"when": "false"
932+
},
933+
{
934+
"command": "java.open.serverStderrLog",
935+
"when": "false"
929936
},
930937
{
931938
"command": "java.open.clientLog",
932-
"title": "%java.open.clientLog%",
933-
"category": "Java"
939+
"when": "false"
934940
},
935941
{
936942
"command": "java.open.logs",

package.nls.json

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
"java.server.mode.switch": "Switch to Standard Mode",
33
"java.projectConfiguration.update": "Update Project",
44
"java.project.import": "Import Java Projects into Workspace",
5-
"java.open.serverLog": "Open Java Language Server Log File",
6-
"java.open.clientLog": "Open Java Extension Log File",
75
"java.open.logs": "Open All Log Files",
86
"java.workspace.compile": "Force Java Compilation",
97
"java.open.formatter.settings": "Open Java Formatter Settings",

package.nls.zh.json

-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
"java.server.mode.switch": "切换到标准模式",
33
"java.projectConfiguration.update": "更新项目",
44
"java.project.import": "将 Java 项目导入工作区",
5-
"java.open.serverLog": "打开 Java 语言服务器日志文件",
6-
"java.open.clientLog": "打开 Java 插件日志文件",
75
"java.open.logs": "打开所有日志文件",
86
"java.workspace.compile": "强制编译",
97
"java.open.formatter.settings": "打开 Java 格式设置",

src/commands.ts

+10
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,16 @@ export namespace Commands {
8484
*/
8585
export const OPEN_SERVER_LOG = 'java.open.serverLog';
8686

87+
/**
88+
* Open Java Language Service Output Log file
89+
*/
90+
export const OPEN_SERVER_STDOUT_LOG = 'java.open.serverStdoutLog';
91+
92+
/**
93+
* Open Java Language Server Error Log file
94+
*/
95+
export const OPEN_SERVER_STDERR_LOG = 'java.open.serverStderrLog';
96+
8797
/**
8898
* Open Java client Log file
8999
*/

src/extension.ts

+25-2
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,8 @@ export function activate(context: ExtensionContext): Promise<ExtensionAPI> {
369369

370370
// Register commands here to make it available even when the language client fails
371371
context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_LOG, (column: ViewColumn) => openServerLogFile(workspacePath, column)));
372+
context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_STDOUT_LOG, (column: ViewColumn) => openRollingServerLogFile(workspacePath, '.out-jdt.ls', column)));
373+
context.subscriptions.push(commands.registerCommand(Commands.OPEN_SERVER_STDERR_LOG, (column: ViewColumn) => openRollingServerLogFile(workspacePath, '.error-jdt.ls', column)));
372374

373375
context.subscriptions.push(commands.registerCommand(Commands.OPEN_CLIENT_LOG, (column: ViewColumn) => openClientLogFile(clientLogFile, column)));
374376

@@ -734,6 +736,25 @@ function openServerLogFile(workspacePath, column: ViewColumn = ViewColumn.Active
734736
return openLogFile(serverLogFile, 'Could not open Java Language Server log file', column);
735737
}
736738

739+
function openRollingServerLogFile(workspacePath, filename, column: ViewColumn = ViewColumn.Active): Thenable<boolean> {
740+
return new Promise((resolve) => {
741+
const dirname = path.join(workspacePath, '.metadata');
742+
743+
// find out the newest one
744+
glob(filename + '-*', { cwd: dirname }, (err, files) => {
745+
if (!err && files.length > 0) {
746+
files.sort();
747+
748+
const logFile = path.join(dirname, files[files.length - 1]);
749+
openLogFile(logFile, `Could not open Java Language Server log file ${filename}`, column).then((result) => resolve(result));
750+
} else {
751+
window.showWarningMessage(`Could not find Java Language Server log file ${filename} in ${dirname}`);
752+
resolve(false);
753+
}
754+
});
755+
});
756+
}
757+
737758
function openClientLogFile(logFile: string, column: ViewColumn = ViewColumn.Active): Thenable<boolean> {
738759
return new Promise((resolve) => {
739760
const filename = path.basename(logFile);
@@ -765,7 +786,9 @@ function openClientLogFile(logFile: string, column: ViewColumn = ViewColumn.Acti
765786

766787
async function openLogs() {
767788
await commands.executeCommand(Commands.OPEN_CLIENT_LOG, ViewColumn.One);
768-
await commands.executeCommand(Commands.OPEN_SERVER_LOG, ViewColumn.Two);
789+
await commands.executeCommand(Commands.OPEN_SERVER_LOG, ViewColumn.One);
790+
await commands.executeCommand(Commands.OPEN_SERVER_STDOUT_LOG, ViewColumn.One);
791+
await commands.executeCommand(Commands.OPEN_SERVER_STDERR_LOG, ViewColumn.One);
769792
}
770793

771794
function openLogFile(logFile, openingFailureWarning: string, column: ViewColumn = ViewColumn.Active): Thenable<boolean> {
@@ -778,7 +801,7 @@ function openLogFile(logFile, openingFailureWarning: string, column: ViewColumn
778801
if (!doc) {
779802
return false;
780803
}
781-
return window.showTextDocument(doc, column)
804+
return window.showTextDocument(doc, {viewColumn: column, preview: false})
782805
.then(editor => !!editor);
783806
}, () => false)
784807
.then(didOpen => {

test/lightweight-mode-suite/extension.test.ts

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ suite('Java Language Extension - LightWeight', () => {
1616
const JAVA_COMMANDS = [
1717
Commands.EXECUTE_WORKSPACE_COMMAND,
1818
Commands.OPEN_SERVER_LOG,
19+
Commands.OPEN_SERVER_STDOUT_LOG,
20+
Commands.OPEN_SERVER_STDERR_LOG,
1921
Commands.OPEN_CLIENT_LOG,
2022
Commands.OPEN_LOGS,
2123
Commands.OPEN_FORMATTER,

test/standard-mode-suite/extension.test.ts

+2
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ suite('Java Language Extension - Standard', () => {
5555
Commands.OPEN_LOGS,
5656
Commands.OPEN_OUTPUT,
5757
Commands.OPEN_SERVER_LOG,
58+
Commands.OPEN_SERVER_STDOUT_LOG,
59+
Commands.OPEN_SERVER_STDERR_LOG,
5860
Commands.ORGANIZE_IMPORTS,
5961
Commands.OVERRIDE_METHODS_PROMPT,
6062
Commands.PROJECT_CONFIGURATION_STATUS,

0 commit comments

Comments
 (0)