Task: Fix GTH-PP integrals (fix #2575) (pyscf/pyscf#2577)

org: pyscf
repo: pyscf
pr_number: 2577
issue_title: Fix GTH-PP integrals (fix #2575)
resolved_issues: number: 2575
title: Possible bug in GTH PP
body: MWE
```
from pyscf.pbc import gto
import numpy as np

cell= gto.Cell(atom='''Cu .0 .0 .0''',
               a=np.array([[0.5, 0.5, 0], [0, 0.5, 0.5], [0.5, 0, 0.5]])* 3.0,
               basis='gth-dzvp-molopt-sr',
               pseudo='gth-pbe-q11',
               verbose=4
              ).build()
kpts = cell.make_kpts([2,2,2])
mf = cell.KRKS(xc='pbe0', kpts=kpts).density_fit()
mf.max_cycle=2
mf.run()
```
traceback
```
  File "/share/home/srwang/pbc/gthpp.py", line 15, in <module>
    mf.run()
  File "/share/home/srwang/pyscf2/pyscf/lib/misc.py", line 638, in run
    self.kernel(*args)
  File "<string>", line 2, in kernel
  File "/share/home/srwang/pyscf2/pyscf/scf/hf.py", line 2000, in scf
    kernel(self, self.conv_tol, self.conv_tol_grad,
  File "/share/home/srwang/pyscf2/pyscf/scf/hf.py", line 128, in kernel
    h1e = mf.get_hcore(mol)
  File "/share/home/srwang/pyscf2/pyscf/pbc/scf/khf.py", line 77, in get_hcore
    nuc = lib.asarray(mf.with_df.get_pp(kpts))
  File "/share/home/srwang/pyscf2/pyscf/pbc/df/df.py", line 393, in get_pp
    vpp = dfbuilder.get_pp()
  File "/share/home/srwang/pyscf2/pyscf/pbc/df/rsdf_builder.py", line 1031, in get_pp
    vpp += pp2builder.get_pp_loc_part2()
ValueError: operands could not be broadcast together with shapes (8,25,25) (8,) (8,25,25)
```

Reference solution:
fix_patch: diff --git a/pyscf/pbc/df/aft.py b/pyscf/pbc/df/aft.py
index 1440cc7f63..87a1d323a3 100644
--- a/pyscf/pbc/df/aft.py
+++ b/pyscf/pbc/df/aft.py
@@ -329,7 +329,8 @@ def get_pp_loc_part2(self):
             else:
                 lib.logger.warn(cell, 'cell.pseudo was specified but its elements %s '
                                 'were not found in the system.', cell._pseudo.keys())
-            vpploc = [0] * nkpts
+            nao = cell.nao
+            vpploc = np.zeros((nkpts, nao, nao))
             return vpploc
 
         rcut = self._estimate_rcut_3c1e(rs_cell, fake_cells)
diff --git a/pyscf/tdscf/_lr_eig.py b/pyscf/tdscf/_lr_eig.py
index 28beab7ffd..0eaa964bf5 100644
--- a/pyscf/tdscf/_lr_eig.py
+++ b/pyscf/tdscf/_lr_eig.py
@@ -524,10 +524,7 @@ def real_eig(aop, x0, precond, tol_residual=1e-5, nroots=1, x0sym=None, pick=Non
     assert pick is None
     assert callable(precond)
 
-    if isinstance(verbose, logger.Logger):
-        log = verbose
-    else:
-        log = logger.Logger(sys.stdout, verbose)
+    log = logger.new_logger(verbose)
 
     assert x0.ndim == 2
     A_size = x0.shape[1] // 2