我正在创建Java Logger,并尝试在控制台中将其写入文件中。
控制台部分工作正常,但从未创建文件。我希望文件存在于目标文件夹中。
我正在使用具有Eclipse IDE的Ubuntu计算机。我已将rwx的所有权限授予目录中的文件夹/文件,但未创建该文件,或者如果我手动创建该文件,则不会写入该文件。
public class CukeLogs {
private static Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);
FileHandler fileHandler = null;
public CukeLogs() {
LogManager.getLogManager().reset();
logger.setLevel(Level.ALL);
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
logger.addHandler(consoleHandler);
try {
fileHandler = new FileHandler("/home/ninad/Logs/CucumberLogs.log", true);
} catch (IOException e) {
e.printStackTrace();
}
fileHandler.setFormatter(new SimpleFormatter());
fileHandler.setLevel(Level.ALL);
logger.addHandler(fileHandler);
}
public static Logger getLogger() {
return logger;
}
}
ls -l -d /home /home/ninad /home/ninad/Logs /home/ninad/Logs/CucumberLogs.log
drwxr-xr-x 4 root root 4096 Aug 31 2017 /home
drwxr-xr-x 73 ninad ninad 4096 Aug 14 20:17 /home/ninad
drwxrwxrwx 2 ninad ninad 4096 Aug 13 20:53 /home/ninad/Logs
-rwxrwxrwx 1 ninad ninad 0 Aug 13 19:57 /home/ninad/Logs/CucumberLogs.log
答案 0 :(得分:0)
改为尝试:
$form->field()
要为每个Java类创建一个新的记录器,只需创建一个新的echo $form->field($model, 'date', [
'options' => [
'class' => 'form-group has-icon has-label'
],
'inputOptions' => [
'class' => 'form-control'
],
'template' => '{label}{input}<span class="form-control-icon"><i class="fa fa-map-marker"></i></span>{error}'
])->widget(yii\jui\DatePicker::class, [
'id' => 'created_at',
'options' => [
'placeholder' => 'Airport or Anywhere'
]
]);
。此外,您还应该为import java.io.IOException;
import java.util.logging.*;
public class CukeLogs {
private Logger logger;
public CukeLogs(Logger logger) {
this.logger = logger;
logger.setLevel(Level.ALL);
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.ALL);
logger.addHandler(consoleHandler);
try {
Handler fileHandler = new FileHandler("src/cucumber.log", true);
SimpleFormatter simple = new SimpleFormatter();
fileHandler.setFormatter(simple);
fileHandler.setLevel(Level.ALL);
logger.addHandler(fileHandler);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* @param className name of the class in which you want to create a logger
* @return an encapsuled Logger
*/
public static CukeLogs getLogger(String className) {
return new CukeLogs(Logger.getLogger(className));
}
public void entering(String sourceClass, String sourceMethod){
logger.entering(sourceClass, sourceMethod );
}
}
写一些其他功能,例如CukeLogs
,以建立到实际CukeLogs
的接口。
此外,'leaving', 'log', 'info'
的想法是,当您要将Logger更改为另一个框架时,可以封装Logger以获得更大的灵活性。因此,最好为每个Java类创建一个具有自己名称的记录器。
否则,使用静态最终Logger创建Logger
并没有实际意义
答案 1 :(得分:0)
public class Outter{
class Inner{
void innerDoSomeThing(){
System.out.println("Do something");
}
}
private Inner inner = new Inner();
public Outer(){
}
public void outterDoSomething(){
inner.innerDoSomeThing();
}
}
正如您所看到的,Outter类的outterDoSomething方法除了在类Inner的情况下调用innerDoSomething方法外,没有做任何其他事情。