WebRoller

ExternallyRolledFileAppenderのWEB版Rollerクラス。
Rollerクラスのコードを流用。


package roller;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.log4j.varia.ExternallyRolledFileAppender;

public class WebRoller extends HttpServlet {

protected void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("MS932");
String host = req.getParameter("host");
String port = req.getParameter("port");

if (host != null && port != null)
roll(host, port);

res.setContentType("text/html; charset=Shift_JIS");
PrintWriter writer = res.getWriter();
writer.println("<html>");
writer.println(" <head>");
writer.println(" <title>Web Roller</title>");
writer.println(" </head>");
writer.println(" <body>");
writer.println(" <form action=\"" + req.getContextPath() + "/roller\" method=\"post\">");
writer.println(" =>java org.apache.log4j.varia.Roller ");
writer.println(" <input type=\"text\" name=\"host\" value=\"localhost\"> ");
writer.println(" <input type=\"text\" name=\"port\" value=\"8938\"><br>");
writer.println(" <input type=\"submit\" value=\"実行\">");
writer.println(" </form>");
writer.println(" </body>");
writer.println("</html>");
}

public void roll(String host, String port) throws NumberFormatException,
UnknownHostException, IOException {
Socket socket = new Socket(host, Integer.parseInt(port));
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
DataInputStream dis = new DataInputStream(socket.getInputStream());
dos.writeUTF(ExternallyRolledFileAppender.ROLL_OVER);
String rc = dis.readUTF();
if (ExternallyRolledFileAppender.OK.equals(rc)) {
System.out.println("Roll over signal acknowledged by remote appender.");
} else {
System.err.println("Unexpected return code " + rc
+ " from remote entity.");
}
}

}