The user's guide has a bit of documentation as to how to do this:
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
InputStream uploadedStream = item.getInputStream();
// your database code goes here
uploadedStream.close();
}
Per log4j, you need a properties file structured as follows:
# Root logger option
log4j.rootLogger=DEBUG, file, us
# Direct log messages to a plaintext log
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=public_html/news.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.stderr=org.apache.log4j.ConsoleAppender
log4j.appender.stderr.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1} %L - %m%n
log4j.appender.stderr.layout=org.apache.log4j.PatternLayout
... and to log stacktraces, in your catch block, put loggerInstance.error(exceptionInstance.getMessage(), exceptionInstance);
and the full stacktrace will be logged, assuming the ERROR level is logged as well.