Commit 52c033db authored by Liang Ding's avatar Liang Ding

格式化 & 文件日志配置

parent 99273811
......@@ -39,149 +39,127 @@ import org.json.JSONObject;
/**
* This listener is responsible for processing article comment reply.
*
*
* @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.1.1.7, Nov 20, 2015
* @author <a href="http://www.wanglay.com">Lei Wang</a>
* @version 1.2.1.7, May 6, 2016
* @since 0.3.1
*/
public final class ArticleCommentReplyNotifier extends
AbstractEventListener<JSONObject> {
/**
* Logger.
*/
private static final Logger LOGGER = Logger
.getLogger(ArticleCommentReplyNotifier.class.getName());
/**
* Mail service.
*/
private MailService mailService = MailServiceFactory.getMailService();
@Override
public void action(final Event<JSONObject> event) throws EventException {
final JSONObject eventData = event.getData();
final JSONObject comment = eventData.optJSONObject(Comment.COMMENT);
final JSONObject article = eventData.optJSONObject(Article.ARTICLE);
LOGGER.log(
Level.DEBUG,
"Processing an event[type={0}, data={1}] in listener[className={2}]",
new Object[] { event.getType(), eventData,
ArticleCommentReplyNotifier.class.getName() });
final String originalCommentId = comment
.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID);
if (Strings.isEmptyOrNull(originalCommentId)) {
LOGGER.log(Level.DEBUG, "This comment[id={0}] is not a reply",
comment.optString(Keys.OBJECT_ID));
return;
}
if (Latkes.getServePath().contains("localhost")) {
LOGGER.log(Level.INFO,
"Solo runs on local server, so should not send mail");
return;
}
final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
final PreferenceQueryService preferenceQueryService = beanManager
.getReference(PreferenceQueryService.class);
final CommentRepository commentRepository = beanManager
.getReference(CommentRepositoryImpl.class);
try {
final String commentEmail = comment
.getString(Comment.COMMENT_EMAIL);
final JSONObject originalComment = commentRepository
.get(originalCommentId);
final String originalCommentEmail = originalComment
.getString(Comment.COMMENT_EMAIL);
if (originalCommentEmail.equalsIgnoreCase(commentEmail)) {
return;
}
final JSONObject preference = preferenceQueryService
.getPreference();
if (null == preference) {
throw new EventException("Not found preference");
}
final String blogTitle = preference
.getString(Option.ID_C_BLOG_TITLE);
final String adminEmail = preference
.getString(Option.ID_C_ADMIN_EMAIL);
final String commentContent = comment
.getString(Comment.COMMENT_CONTENT);
final String commentSharpURL = comment
.getString(Comment.COMMENT_SHARP_URL);
final Message message = new Message();
message.setFrom(adminEmail);
message.addRecipient(originalCommentEmail);
final JSONObject replyNotificationTemplate = preferenceQueryService
.getReplyNotificationTemplate();
final String articleTitle = article
.getString(Article.ARTICLE_TITLE);
final String articleLink = Latkes.getServePath()
+ article.getString(Article.ARTICLE_PERMALINK);
final String commentName = comment.getString(Comment.COMMENT_NAME);
final String commentURL = comment.getString(Comment.COMMENT_URL);
String commenter;
if (!"http://".equals(commentURL)) {
commenter = "<a target=\"_blank\" " + "href=\"" + commentURL
+ "\">" + commentName + "</a>";
} else {
commenter = commentName;
}
final String mailSubject = replyNotificationTemplate.getString(
"subject").replace("${postLink}", articleLink)
.replace("${postTitle}", articleTitle)
.replace("${replier}", commenter)
.replace("${blogTitle}", blogTitle)
.replace("${replyURL}",
Latkes.getServePath() + commentSharpURL)
.replace("${replyContent}", commentContent);
message.setSubject(mailSubject);
final String mailBody = replyNotificationTemplate
.getString("body")
.replace("${postLink}", articleLink)
.replace("${postTitle}", articleTitle)
.replace("${replier}", commenter)
.replace("${blogTitle}", blogTitle)
.replace("${replyURL}",
Latkes.getServePath() + commentSharpURL)
.replace("${replyContent}", commentContent);
message.setHtmlBody(mailBody);
LOGGER.log(
Level.DEBUG,
"Sending a mail[mailSubject={0}, mailBody=[{1}] to [{2}]",
new Object[] { mailSubject, mailBody, originalCommentEmail });
mailService.send(message);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, e.getMessage(), e);
throw new EventException("Reply notifier error!");
}
}
/**
* Gets the event type {@linkplain EventTypes#ADD_COMMENT_TO_ARTICLE}.
*
* @return event type
*/
@Override
public String getEventType() {
return EventTypes.ADD_COMMENT_TO_ARTICLE;
}
public final class ArticleCommentReplyNotifier extends AbstractEventListener<JSONObject> {
/**
* Logger.
*/
private static final Logger LOGGER = Logger.getLogger(ArticleCommentReplyNotifier.class.getName());
/**
* Mail service.
*/
private MailService mailService = MailServiceFactory.getMailService();
@Override
public void action(final Event<JSONObject> event) throws EventException {
final JSONObject eventData = event.getData();
final JSONObject comment = eventData.optJSONObject(Comment.COMMENT);
final JSONObject article = eventData.optJSONObject(Article.ARTICLE);
LOGGER.log(Level.DEBUG,
"Processing an event[type={0}, data={1}] in listener[className={2}]",
new Object[]{event.getType(), eventData, ArticleCommentReplyNotifier.class.getName()});
final String originalCommentId = comment.optString(Comment.COMMENT_ORIGINAL_COMMENT_ID);
if (Strings.isEmptyOrNull(originalCommentId)) {
LOGGER.log(Level.DEBUG, "This comment[id={0}] is not a reply", comment.optString(Keys.OBJECT_ID));
return;
}
if (Latkes.getServePath().contains("localhost")) {
LOGGER.log(Level.INFO, "Solo runs on local server, so should not send mail");
return;
}
final LatkeBeanManager beanManager = Lifecycle.getBeanManager();
final PreferenceQueryService preferenceQueryService = beanManager.getReference(PreferenceQueryService.class);
final CommentRepository commentRepository = beanManager.getReference(CommentRepositoryImpl.class);
try {
final String commentEmail = comment.getString(Comment.COMMENT_EMAIL);
final JSONObject originalComment = commentRepository.get(originalCommentId);
final String originalCommentEmail = originalComment.getString(Comment.COMMENT_EMAIL);
if (originalCommentEmail.equalsIgnoreCase(commentEmail)) {
return;
}
final JSONObject preference = preferenceQueryService.getPreference();
if (null == preference) {
throw new EventException("Not found preference");
}
final String blogTitle = preference.getString(Option.ID_C_BLOG_TITLE);
final String adminEmail = preference.getString(Option.ID_C_ADMIN_EMAIL);
final String commentContent = comment.getString(Comment.COMMENT_CONTENT);
final String commentSharpURL = comment.getString(Comment.COMMENT_SHARP_URL);
final Message message = new Message();
message.setFrom(adminEmail);
message.addRecipient(originalCommentEmail);
final JSONObject replyNotificationTemplate = preferenceQueryService.getReplyNotificationTemplate();
final String articleTitle = article.getString(Article.ARTICLE_TITLE);
final String articleLink = Latkes.getServePath() + article.getString(Article.ARTICLE_PERMALINK);
final String commentName = comment.getString(Comment.COMMENT_NAME);
final String commentURL = comment.getString(Comment.COMMENT_URL);
String commenter;
if (!"http://".equals(commentURL)) {
commenter = "<a target=\"_blank\" " + "href=\"" + commentURL + "\">" + commentName + "</a>";
} else {
commenter = commentName;
}
final String mailSubject = replyNotificationTemplate.getString(
"subject").replace("${postLink}", articleLink)
.replace("${postTitle}", articleTitle)
.replace("${replier}", commenter)
.replace("${blogTitle}", blogTitle)
.replace("${replyURL}",
Latkes.getServePath() + commentSharpURL)
.replace("${replyContent}", commentContent);
message.setSubject(mailSubject);
final String mailBody = replyNotificationTemplate
.getString("body")
.replace("${postLink}", articleLink)
.replace("${postTitle}", articleTitle)
.replace("${replier}", commenter)
.replace("${blogTitle}", blogTitle)
.replace("${replyURL}",
Latkes.getServePath() + commentSharpURL)
.replace("${replyContent}", commentContent);
message.setHtmlBody(mailBody);
LOGGER.log(Level.DEBUG, "Sending a mail[mailSubject={0}, mailBody=[{1}] to [{2}]",
new Object[]{mailSubject, mailBody, originalCommentEmail});
mailService.send(message);
} catch (final Exception e) {
LOGGER.log(Level.ERROR, e.getMessage(), e);
throw new EventException("Reply notifier error!");
}
}
/**
* Gets the event type {@linkplain EventTypes#ADD_COMMENT_TO_ARTICLE}.
*
* @return event type
*/
@Override
public String getEventType() {
return EventTypes.ADD_COMMENT_TO_ARTICLE;
}
}
......@@ -16,33 +16,33 @@
#
# Description: Solo logging configurations.
# Version: 1.1.0.4, Nov 5, 2015
# Author: Liang Ding
# Version: 1.1.0.4, May 6, 2016
# Author: <a href="http://88250.b3log.org">Liang Ding</a>
# Author: <a href="http://www.wanglay.com">Lei Wang</a>
#
log4j.rootLogger=INFO,stdout,MYFILE
log4j.rootLogger=INFO,stdout,file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%c:%L) - %m%n
log4j.appender.stdout.layout.ConversionPattern=[%-5p]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c:%L]: %m%n
# Print only messages of level ERROR or above in the package noModule.
log4j.logger.noModule=FATAL
log4j.logger.org.b3log.solo=INFO,MYFILE
log4j.logger.org.b3log.solo=INFO
log4j.logger.org.b3log.latke=INFO,MYFILE
log4j.logger.org.b3log.latke.util.freemarker.Templates=ERROR,MYFILE
log4j.logger.org.b3log.latke=ERROR
log4j.logger.org.b3log.latke.util.freemarker.Templates=ERROR
log4j.logger.org.eclipse.jetty=WARN,MYFILE
log4j.logger.freemarker=WARN,MYFILE
log4j.logger.com.mchange=WARN,MYFILE
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.freemarker=WARN
log4j.logger.com.mchange=WARN
log4j.appender.MYFILE=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.MYFILE.File=/data/logs/myblog.log
log4j.appender.MYFILE.File=/logs/myblog.log
log4j.appender.MYFILE.DatePattern=.yyyy-MM-dd
log4j.appender.MYFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.MYFILE.layout.ConversionPattern=[%d{HH\:mm\:ss}] %p %c - %m%n
\ No newline at end of file
# File Logger Conf
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./solo.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p]-[%d{yyyy-MM-dd HH:mm:ss}]-[%c:%L]: %m%n
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment