Commit b73917dc authored by Liang Ding's avatar Liang Ding

📈 #12293 Finer logging

parent 3875cd47
...@@ -8,6 +8,7 @@ import org.b3log.latke.logging.Level; ...@@ -8,6 +8,7 @@ import org.b3log.latke.logging.Level;
import org.b3log.latke.logging.Logger; import org.b3log.latke.logging.Logger;
import org.b3log.latke.model.User; import org.b3log.latke.model.User;
import org.b3log.latke.service.annotation.Service; import org.b3log.latke.service.annotation.Service;
import org.b3log.latke.util.Strings;
import org.b3log.solo.SoloServletListener; import org.b3log.solo.SoloServletListener;
import org.b3log.solo.model.Article; import org.b3log.solo.model.Article;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -30,7 +31,7 @@ public class ImportService { ...@@ -30,7 +31,7 @@ public class ImportService {
/** /**
* Logger. * Logger.
*/ */
private static final Logger LOGGER = Logger.getLogger(UpgradeService.class); private static final Logger LOGGER = Logger.getLogger(ImportService.class);
/** /**
* Default tag. * Default tag.
...@@ -50,45 +51,66 @@ public class ImportService { ...@@ -50,45 +51,66 @@ public class ImportService {
private UserQueryService userQueryService; private UserQueryService userQueryService;
public void importMarkdowns() { public void importMarkdowns() {
final ServletContext servletContext = SoloServletListener.getServletContext(); new Thread(() -> {
final String markdownsPath = servletContext.getRealPath("markdowns"); final ServletContext servletContext = SoloServletListener.getServletContext();
LOGGER.debug("Import directory [" + markdownsPath + "]"); final String markdownsPath = servletContext.getRealPath("markdowns");
LOGGER.debug("Import directory [" + markdownsPath + "]");
JSONObject admin; JSONObject admin;
try { try {
admin = userQueryService.getAdmin(); admin = userQueryService.getAdmin();
} catch (final Exception e) { } catch (final Exception e) {
return; return;
} }
if (null == admin) { // Not init yet
return;
}
final String adminEmail = admin.optString(User.USER_EMAIL);
final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true); if (null == admin) { // Not init yet
for (final File md : mds) { return;
final String fileName = md.getName();
if (StringUtils.equalsIgnoreCase(fileName, "README.md")) {
continue;
} }
try { final String adminEmail = admin.optString(User.USER_EMAIL);
final String fileContent = FileUtils.readFileToString(md, "UTF-8");
final JSONObject article = parseArticle(fileName, fileContent); int succCnt = 0, failCnt = 0;
article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail); final Set<String> failSet = new TreeSet<>();
final Collection<File> mds = FileUtils.listFiles(new File(markdownsPath), new String[]{"md"}, true);
for (final File md : mds) {
final String fileName = md.getName();
if (StringUtils.equalsIgnoreCase(fileName, "README.md")) {
continue;
}
try {
final String fileContent = FileUtils.readFileToString(md, "UTF-8");
final JSONObject article = parseArticle(fileName, fileContent);
article.put(Article.ARTICLE_AUTHOR_EMAIL, adminEmail);
final JSONObject request = new JSONObject();
request.put(Article.ARTICLE, article);
final String id = articleMgmtService.addArticle(request);
FileUtils.moveFile(md, new File(md.getPath() + "." + id));
LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]");
succCnt++;
} catch (final Exception e) {
LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e);
failCnt++;
failSet.add(fileName);
}
}
final JSONObject request = new JSONObject(); final StringBuilder logBuilder = new StringBuilder();
request.put(Article.ARTICLE, article); logBuilder.append("[").append(succCnt).append("] imported, [").append(failCnt).append("] failed");
if (failCnt > 0) {
logBuilder.append(": ").append(Strings.LINE_SEPARATOR);
final String id = articleMgmtService.addArticle(request); for (final String fail : failSet) {
FileUtils.moveFile(md, new File(md.getPath() + "." + id)); logBuilder.append(" ").append(fail).append(Strings.LINE_SEPARATOR);
LOGGER.info("Imported article [" + article.optString(Article.ARTICLE_TITLE) + "]"); }
} catch (final Exception e) { } else {
LOGGER.log(Level.ERROR, "Import file [" + fileName + "] failed", e); logBuilder.append(" :p");
} }
} LOGGER.info(logBuilder.toString());
}).start();
} }
private JSONObject parseArticle(final String fileName, final String fileContent) { private JSONObject parseArticle(final String fileName, final String fileContent) {
......
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