#jsp #logging
#jsp #ведение журнала
Вопрос:
Я хотел бы создать новый файл и записать некоторую новую информацию для нового входа в систему, но я получаю проблему, которая постоянно записывается в один и тот же файл журнала. Как мне создать новый файл после входа в систему? У меня есть jsp-код в моем файле logincheck.jsp.
<%
java.util.Date date= new java.util.Date();
//String ADDRESS = request.getRemoteAddr();
InetAddress thisIp = InetAddress.getLocalHost();
String strPath = "C:\Users\learningAppLogFile\mylog.txt";
File strFile = new File(strPath);
boolean fileCreated = strFile.createNewFile();
try{
if(!strFile.exists()){
strFile.createNewFile();
}
FileWriter fileWriter = new FileWriter(strFile, true);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
bufferedWriter.newLine();
bufferedWriter.write(" [" date "] : [" username "] : [" thisIp "] ");
bufferedWriter.flush();
bufferedWriter.close();
} catch(IOException e) {
}%>
Комментарии:
1. Вы хотите создать новый файл или переопределить существующие данные или хотите добавить их в конце?
2. @Braj нет. я хочу создать файл с другим именем. Например, у меня есть log.txt теперь, когда он генерируется системой автоматически, но после того, как я снова запущу систему, я хочу, чтобы она создала новый файл с именем log2.txt или что-то вроде log.txt.2
3. используйте счетчик в приведенном ниже примере кода и увеличьте его в
sessionCreated()
методе и создайте новый файл журнала при событии входа в систему.
Ответ №1:
Как мне создать новый файл после входа в систему? Я хочу создать файл с другим именем.
Например, у меня есть log.txt теперь, когда он генерируется системой автоматически, но после того, как я снова запущу систему, я хочу, чтобы она создала новый файл с именем log2.txt или что-то вроде log.txt.2
Вот простой пример HttpSessionListener, позволяющий отслеживать поведение вашего сеанса при создании и удалении, а затем рассмотреть этот прослушиватель.
Пример кода:
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionCounterListener implements HttpSessionListener {
private int counter=0;
@Override
public void sessionCreated(HttpSessionEvent arg0) {
System.out.println("sessionCreated");
counter ;
// create a new file appending counter value in the file name
// Here log the sign-in events
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
System.out.println("sessionDestroyed");
// Here do whatever you want to do on sign out event
}
}
web.xml
<web-app ...>
<listener>
<listener-class>com.x.y.z.SessionCounterListener</listener-class>
</listener>
</web-app>
Как это работает?
- Если создается новый сеанс, например
request.getSession();
, будет выполнен сеанс прослушивателяsessionCreated()
. - Если сеанс будет уничтожен, например, время ожидания сеанса или
session.invalidate()
время прослушиванияsessionDestroyed()
будет выполнено.
Пример кода:
HttpSession session = request.getSession(); //sessionCreated() is executed
...
session.invalidate(); //sessionDestroyed() is executed
Для получения дополнительной информации посетите mkyong.com откуда взят этот пример.
Некоторые моменты
-
Всегда старайтесь избегать сценариев, вместо этого используйте JSTL и EL.
-
Переместите код в вышеуказанный класс прослушивателя из JSP.