我正在尝试将从JAVA控制台打印的信息显示到C#中。当使用System.out.println在JAVA中输出时,它能正常工作,但是使用logger.info输出无效。
注意:当我在Windows命令提示符(CMD> java -jar testbed.jar)中运行它时,记录器信息会被打印出来。
感谢您对此提供任何意见和帮助。以下是我正在操作的一个简单递增和递减数字的测试代码,并且当按下按钮进行递增或递减时会通过日志打印出来。(无法更改此代码)
注意:当我在Windows命令提示符(CMD> java -jar testbed.jar)中运行它时,记录器信息会被打印出来。
感谢您对此提供任何意见和帮助。以下是我正在操作的一个简单递增和递减数字的测试代码,并且当按下按钮进行递增或递减时会通过日志打印出来。(无法更改此代码)
private static int ValueInteger = 0 ;
static Logger l;
public TestBed() {
initComponents();
try{
l = Logger.getLogger("");
FileHandler fh = new FileHandler("main.log", false);
l.addHandler(fh);
l.setLevel(Level.ALL);
l.fine("Logger Created - JTSRunner.main()");
}catch(Exception ex){}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ValueInteger--;
// System.out.println(Integer.toString(ValueInteger));
l.info(Integer.toString(ValueInteger));
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ValueInteger++;
// System.out.println(Integer.toString(ValueInteger));
l.info(Integer.toString(ValueInteger));
}
以下是我正在处理的C#代码,用于处理并输出到文本框:
private void Button_Click(object sender, RoutedEventArgs e)
{
ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/k java -jar Testbed.jar ")
{
WorkingDirectory = "C:\\Testbed",
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
};
Process process = Process.Start(startInfo);
process.OutputDataReceived += writeCommandInfo;
process.BeginOutputReadLine();
//process.WaitForExit();
}
private void writeCommandInfo(object sender, DataReceivedEventArgs e)
{
if (e.Data != null)
{
this.Text.Dispatcher.Invoke(new Action(() => this.Text.Text = e.Data.ToString()), DispatcherPriority.Normal, null);
}
}